使用webtest进行金字塔身份验证测试

时间:2016-01-28 10:30:33

标签: python authentication pyramid webtest

我配置了金字塔应用,以便user对象requestuser后经过身份验证后附加到from my_pyramid_app import main as make_app from webtest.app import TestApp from pyramid import testing class LoginTestCase(TestCase): def setUp(self): self.config = testing.setUp() self.app = TestApp(make_app({})) 。到目前为止一切都很好......但是虽然它可以完美运行并且我可以使用浏览器进行测试,但我不明白为什么在webtest测试中# submit valid login data to /login and expect redirect to "next" response = self.app.post('/login', data, status=302) redirect = response.follow() 没有附加到请求中。 我以这种方式配置了我的测试类:

redirect.request

在测试中:

user

按预期工作,用户获得身份验证并重定向到“next”中指定的路径,但<?php date_default_timezone_set("Europe/Helsinki"); $var='Wed, 25 11 2015 00:00:00 GMT'; echo $d=date('Y-m-d',strtotime($var)); //DATE_RFC2822 ?> 不包含$config['base_url'] = 'http://example.com'; $config['index_page'] = ''; 。为什么?我该怎么办?

PS。 official tutorial说:

  

模拟身份验证的最佳方法是查看应用程序   在environ ['REMOTE_USER']中查看是否有人通过身份验证。那么你   可以简单地设置该值,如:

     

app.get('/ secret',extra_environ = dict(REMOTE_USER ='bob'))

但老实说这对我来说听起来很苛刻:/(我的意思是如果我手动定义一个变量,测试的意义是什么?!)

1 个答案:

答案 0 :(得分:0)

webtest和金字塔都使用webob但这并不意味着金字塔的请求与webtest的response.request是同一个对象

webtest和测试应用程序之间共享的唯一不可变对象是environ词典。

这意味着如果您使用“myapp.user”这样的密钥将其存储在request.environ中,您可以检索用户(点和小写很重要,请参阅PEP333)。