0

POST によるビューの呼び出しをテストしようとしています。follow=Trueを使用します。しかし、テスト クライアントは GET メソッドを使用し、私の POST データは渡されません。

ここに私の見解があります:

def aaa(request):
    n = request.method
    d = request.POST
    template = 'shop/test.html'
    return render(request, template, d)

これが私のテストです:

from django.utils import unittest
from django.test.client import Client

def test_add_to_cart_page(self):
    response = self.client.post('/aaa/', {'product': 11}, follow=True)
    self.assertEqual(response.status_code, 200)

ビューが呼び出されたとき。これは POST ではありませんが、GET が使用され、私の POST パラメータはもちろん空です。なぜそれが起こったのか誰かが言うことができますか?

編集: 新鮮な Django できれいな venv を作成しました。そして、期待どおりに動作します(POST を呼び出します) デンマークの状態で何かが腐っているようです。

4

2 に答える 2

2
follow=True

クライアントがリダイレクトに従うことを意味します。

response = self.client.post('/aaa/', {'product': 11}, follow=True)

は、応答に次の応答コンテンツが含まれていることを意味します。テストに問題はありません。POSTを実行している必要があります。


奇妙なのは、ビューが何にもリダイレクトされないため、follow=True を使用する理由がわかりません。また、投稿が機能していないと仮定する理由もわかりません。テストの結果は?

于 2015-02-04T02:44:20.540 に答える
0

調査の結果、PREPEND_WWW を使用すると、テスト クライアントの投稿要求が壊れることがわかりました。

于 2015-02-05T09:18:34.280 に答える