Python 在django/selenium Web测试中创建预身份验证会话
我试图为一个项目创建一个功能测试,用户在访问一些URL之前不需要登录。为此,我创建了一个预验证会话,诱使站点认为测试用户已经登录 我加载了一个带有虚拟url的webdriver实例,在数据库中创建了一个虚拟用户,在后端设置了会话,然后将会话cookie添加到web驱动程序中,如下所示:-Python 在django/selenium Web测试中创建预身份验证会话,python,django,python-3.x,selenium,Python,Django,Python 3.x,Selenium,我试图为一个项目创建一个功能测试,用户在访问一些URL之前不需要登录。为此,我创建了一个预验证会话,诱使站点认为测试用户已经登录 我加载了一个带有虚拟url的webdriver实例,在数据库中创建了一个虚拟用户,在后端设置了会话,然后将会话cookie添加到web驱动程序中,如下所示:- from django.utils.importlib import import_module def load_dummy_url(self): driver.get(self.live_
from django.utils.importlib import import_module
def load_dummy_url(self):
driver.get(self.live_server_url + '/404-not-found')
def create_session_store():
engine = import_module(settings.SESSION_ENGINE)
store = engine.SessionStore()
store.save()
return store
def pre_create_login():
user = get_user_model().objeects.create_user(email='user@testmail.com', first_name='user1', password='pass1')
session_store = create_session_store()
session_store[SESSION_KEY] = user.pk
session_store.save()
return session_store.session_key
def add_cookie_to_browser():
driver.add_cookie(dict(name=settings.SESSION_COOKIE_NAME, value= pre_create_login()))
但是,加载另一个需要用户身份验证的url仍然会重定向到登录页面,因为该请求包含一个匿名用户,因为测试站点认为该用户没有登录
这里有什么不对的地方吗
注意:上面的代码片段没有遵循好的编码模式。这只是一个精确代码的简单复制品。在Selenium测试经过身份验证的请求时,我遇到了同样的问题。 解决方法是: 创建一个新的自定义url,如/selenium/user\u login/并编写一个视图,让用户登录。现在在每个selenium测试用例中调用此url,并重定向到要测试的url