【问题标题】:Creating pre-authentication session in django / selenium Web testing在 django / selenium Web 测试中创建预身份验证会话
【发布时间】:2015-10-10 23:38:05
【问题描述】:

我正在尝试为用户在访问某些 url 之前不需要登录的项目创建功能测试。为此,我创建了一个预身份验证会话,以诱使网站认为测试用户已经登录。

我用虚拟 url 加载了一个 webdriver 实例,在 dbase 中创建一个虚拟用户,在后端设置会话,然后将会话 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 仍然会重定向到登录页面,因为请求包含 AnonymousUser,因为测试站点认为用户未登录。

这里有什么问题吗?

注意:上面的 sn-ps 没有遵循良好的编码模式。它只是精确代码的简单复制。

【问题讨论】:

    标签: python django python-3.x selenium


    【解决方案1】:

    在 Selenium 测试经过身份验证的请求时,我遇到了同样的问题。 解决方法是:

    创建一个新的自定义 url,如 /selenium/user_login/ 并编写一个使用户登录的视图。现在在每个 selenium 测试用例中调用此 url 并重定向到您要测试的 url。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 2010-09-26
      相关资源
      最近更新 更多