3

我正在使用 django-behave 在 Django 项目中运行行为测试。在我的功能文件中,我在几种情况下都有这个给定的步骤:

 Given I am logged in

到目前为止,我一直在做的是使用 Selenium 手动完成登录过程。但这需要很长时间,而且这不是我目前正在测试的。加上行为文档说:

Requests/Twill/Selenium 交互等主要应该进入When步骤

那么在这个 Given 步骤中我应该如何登录用户呢?有没有办法使用 django.test.Client.login()?我可以将会话放入固定装置吗?

4

2 回答 2

2

好的,使用这个答案来回答另一个问题,我已经这样做了:

@given('I am logged in')
def impl(context):
    client = context.test.client
    client.login(email='test@email.com', password='password')

    cookie = client.cookies['sessionid']

    # Selenium will set cookie domain based on current page domain.
    context.browser.get(context.get_url('/404-loads-fastest/'))
    context.browser.add_cookie({
        'name': 'sessionid',
        'value': cookie.value,
        'secure': False,
        'path': '/',
    })

但这似乎仍然是间接的。

于 2015-08-26T17:07:22.917 回答
0

我是 django-behave 的原作者。我已经打开了一张票以改进有关如何登录的文档。

https://github.com/django-behave/django-behave/issues/65

根据被测 django 系统,我采用了不同的方式:在一个站点上,它使用标准的 Django 登录,在另一个站点上,登录是通过 Ajax 调用完成的,第三,我使用的是第 3 方系统用于身份验证。

所以没有单一的方法;正如你所做的那样,我为每个系统编写了一段逻辑。

于 2016-01-06T12:59:11.327 回答