如何使用Django测试客户端设置_dont_enforce_csrf_checks
我正在尝试在进行更高级别的集成测试时,使用Django的测试客户端来强制执行CSRF检查,但我不太确定如何在调用客户端之前手动设置这个标志。
这是我目前的代码,但它失败了(我得到了201,而不是下面的403)。
def test_should_get_403_when_csrf_enforced(self):
self.client.enforce_csrf_checks=False
response = self.client.post(url, {'name': 'foobar'})
self.assertEqual(403, response.status_code)
1 个回答
0
我最后找到了这个解决办法,首先你需要设置csrf令牌,然后在手动创建客户端的时候,需要把enforce_csrf_check这个选项改成关闭。
def test_should_get_403_when_csrf_enforced(self):
self.client = test.Client(enforce_csrf_checks=True)
self.client.cookies[settings.CSRF_COOKIE_NAME] = 'asdf'
response = self.client.post(url, {'name': 'foobar'})
self.assertEqual(403, response.status_code)