У меня проблема с написанием тестов для Django (только с этой рамки). Все работает безупречно в браузере, но когда я использую TestCase, кажется, что метод запроса не является POST. Вот код:Django test client - sendng POST data возвращает 400 error
views.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. Спасибо за любую помощь.
Исправьте свой отступ кода. –
В файле все в порядке;) Но я исправлю. –
Что такое шаблон url? – Alasdair