POST的Django测试总是返回400
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POST的Django测试总是返回400相关的知识,希望对你有一定的参考价值。
在浏览器和时间表中查看所有工作,以添加测试以确保视图继续工作。
问题是测试总是返回400
形成:
class DogForm(forms.Form):
dog_name = forms.CharField(max_length=40)
dog_type = forms.CharField(max_length=40)
视图:
class DogRequestView(LoginRequiredMixin, TemplateView):
template_name='dog_request.html'
def get(self, request):
form = DogForm()
return render(request, self.template_name, {'form': form})
def post(self, request):
form = DogForm(request.POST)
process_status = 'initial'
if form.is_valid():
stuff()
return render(request, self.template_name, {'form': form, 'status': process_status})
测试:
class LabTests(TestCase):
def test_DogForm(self):
form_data = {
'dog_name': 'Test name',
'dog_type': 'k9'
}
self.client.login(username="test@acme.com", password="test")
response = self.client.post("/kenel/dog-catalog/dog-request", form_data)
self.assertEqual(response.status_code, 200)
网址:
url(r'^kenel/dog-catalog/dog-request$', dog_catalog.DogRequestView.as_view()),
测试输出:
----------------------------------------------------------------------
Traceback (most recent call last):
File "/workspace/NSPF-171805/nsp-dev-portal/cloudlab/tests/test_forms.py", line 32, in test_DogForm
self.assertEqual(response.status_code, 200)
AssertionError: 400 != 200
----------------------------------------------------------------------
答案
您忘了在帖子中添加“数据”。
response = self.client.post("/kenel/dog-catalog/dog-request", data=form_data)
以上是关于POST的Django测试总是返回400的主要内容,如果未能解决你的问题,请参考以下文章
CakePHP 3.4.2 测试 POST 的响应总是返回 NULL
使用 TestRestTemplate 进行 Multipart POST 请求的集成测试返回 400