Django のテストの作成に問題があります (このフレームワークを使い始めたばかりです)。ブラウザではすべて問題なく動作しますが、TestCase を使用していると、リクエスト メソッドが POST ではないようです。コードは次のとおりです。
ビュー.py:
def save(request, quiz_id):
try:
quiz = get_object_or_404(Quiz, pk=quiz_id)
qset = Question.objects.filter(quiz=quiz_id)
except IndexError:
raise Http404
questions = []
if request.method == 'POST':
f = QuizForm(request.POST, qset)
if f.is_valid():
do_stuff()
return render(request, 'quiz/results.html', {'questions': questions})
return HttpResponseBadRequest()
tests.py:
def test_results(self):
post_data = {
'ans10': 43,
'ans6' : 28,
'ans7' : 33,
'ans8' : 36,
'ans9' : 38,
}
resp = self.client.post('/1/save/', post_data)
self.assertEqual(resp.status_code, 200)
そして実行中のテスト:
self.assertEqual(resp.status_code, 200)
AssertionError: 400 != 200
フォームは有効で、渡されたデータは正しく、ブラウザーでは、私が言ったように、すべてが機能します。このテストに問題があります。リクエスト メソッドが POST ではないようです。助けてくれてありがとう。