Django 跳过功能测试中的登录过程

Django 跳过功能测试中的登录过程,django,selenium,testing,tdd,Django,Selenium,Testing,Tdd,我正在使用allauth并开始进行一些功能测试。我已经测试了登录功能,现在我想测试其他东西,但我找不到一种方法来开始我的功能测试与预认证的用户。我已尝试使用以下代码,但无法让用户自动登录 def create_pre_authenticated_session(self, username, email): session_key = create_pre_authenticated_session(username, email) # to set a coo

我正在使用allauth并开始进行一些功能测试。我已经测试了登录功能,现在我想测试其他东西,但我找不到一种方法来开始我的功能测试与预认证的用户。我已尝试使用以下代码,但无法让用户自动登录

def create_pre_authenticated_session(self, username, email):
        session_key = create_pre_authenticated_session(username, email)

        # to set a cookie we need to first visit the domain
        self.browser.get(self.live_server_url + "/")
        self.browser.add_cookie(dict(
            name=settings.SESSION_COOKIE_NAME,
            value=session_key,
            path='/',
        ))
谢谢。

您可以使用方法登录用户

如果您的站点使用Django的身份验证系统,则可以使用 force_login()方法模拟用户登录到 地点当测试需要用户时,请使用此方法而不是login() 登录,用户如何登录的详细信息并不重要

与login()不同,此方法跳过身份验证和验证 步骤:允许非活动用户(is_active=False)登录,并且 不需要提供用户的凭据



非常感谢。这在我的单元测试中非常有效,但在我的功能测试中却不行。IT测试是功能测试的子类别,我没有注意到您正在使用selenium浏览器快速传递您的问题。非常感谢。我花了一上午的时间胡思乱想,想弄一套曲奇饼干,但没能使它发挥作用,最后我发现它错了。非常感谢。
def create_pre_authenticated_session(username, email):
    user = User.objects.create(username=username, email=email)
    session = SessionStore()
    session[SESSION_KEY] = user.pk
    session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
    session.save()
    return session.session_key
self.client.force_login(user)
Add the cookie to browser afterwards

cookie = self.client.cookies['sessionid']
self.browser.add_cookie({'name': 'sessionid', 'value': cookie.value, 'secure': False, 'path': '/'})
self.browser.refresh()