我的Django站点设置了一些中间件,这些中间件在每次请求时检查cookie,如果没有设置,则将用户转发到其他地方。
我现在想在网站上运行一些测试。这是我的代码:
def test_contactform(self):
response = self.client.get('/contact/')
self.assertEqual(response.status_code, 200)
print response
self.assertTrue('Contact me' in response.content)
不幸的是,这样做失败了:
Vary: Cookie
Content-Type: text/html; charset=utf-8
Location: http://testserver/ldap/?next=/contact/
Traceback (most recent call last):
File "tests.py", line 43, in test_contactform
self.assertEqual(response.status_code, 200)
AssertionError: 302 != 200
我可以(I)在Django测试客户机上设置一个cookie(如果是,如何设置)还是(ii)要求Django测试客户机遵循重定向并针对最终页面进行测试?
以上都不适合我(Django1.9,Python3.4)。找到此解决方案here:
client.get
方法接受一个follow
参数,该参数允许它遵循重定向:虽然接受的答案是解决此问题的正确方法,但我只想指出,您可以直接设置cookies(即,您所称的方法号(I)),而不是通过测试客户机。相反,您需要使用^{} 来构造一个可以设置cookie的请求,然后将其直接传递给相关视图。
所以不是:
你需要:
其中
contact_view
是服务于/contact/
的视图。相关问题 更多 >
编程相关推荐