我配置了金字塔应用,以便user
对象request
在user
后经过身份验证后附加到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'))
但老实说这对我来说听起来很苛刻:/(我的意思是如果我手动定义一个变量,测试的意义是什么?!)
答案 0 :(得分:0)
webtest和金字塔都使用webob但这并不意味着金字塔的请求与webtest的response.request是同一个对象
webtest和测试应用程序之间共享的唯一不可变对象是environ词典。
这意味着如果您使用“myapp.user”这样的密钥将其存储在request.environ中,您可以检索用户(点和小写很重要,请参阅PEP333)。