Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django/selenium Web测试中创建预身份验证会话_Python_Django_Python 3.x_Selenium - Fatal编程技术网

Python 在django/selenium 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_

我试图为一个项目创建一个功能测试,用户在访问一些URL之前不需要登录。为此,我创建了一个预验证会话,诱使站点认为测试用户已经登录

我加载了一个带有虚拟url的webdriver实例,在数据库中创建了一个虚拟用户,在后端设置了会话,然后将会话cookie添加到web驱动程序中,如下所示:-

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