2

djangoテストクライアントを使用した高レベルの統合テスト中にcsrfチェックを強制しようとしていますが、このビットを手動で反転する方法がわかりません(クライアントが呼び出される前に)

これが私が現在失敗しているものです(私は以下の403の代わりに201を取得します)

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)
4

1 に答える 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)
于 2013-02-19T19:08:30.823 に答える