在测试Django时,视图返回200条代码,但未发送任何相关的错误消息。
def ajax_view(request):
msg = ''
if request.is_ajax():
username = request.POST['username']
user = User.objects.get(username=username)
msg = 'user exists'
return HttpResponse(msg)
在tests.py中
response = self.client.post(reverse('ajax_view'), data={'username': 'hello'})
self.assertEqual(200, response.status_code)
self.assertContains(response, 'exist')
似乎它没有通过request.is_ajax()。.如何在Django测试中模拟ajax调用?
该测试客户端上的文档提到这一点; 您需要传递HTTP_X_REQUESTED_WITH标头,您可以将其用作关键字参数。
另外,如果您content_type
以'application / json'传递,则Django将自动序列化为JSON。所以:
response = self.client.post(
reverse('ajax_view'),
data={'username': 'hello'},
content_type='application/json',
HTTP_X_REQUESTED_WITH='XMLHttpRequest'
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句