Django 跳过功能测试中的登录过程
我正在使用allauth并开始进行一些功能测试。我已经测试了登录功能,现在我想测试其他东西,但我找不到一种方法来开始我的功能测试与预认证的用户。我已尝试使用以下代码,但无法让用户自动登录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
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()