我已经制作了一个django应用程序并正在为它编写测试。 在我的一个观点中,我手动抛出异常:
raise Http404('Not authorised')
使用django的内置测试框架(基于unittest)编写测试时。
TL; DR:有没有办法编写测试,以确保视图确实返回Http404
。 (assertEqual(response.status_code, 404
不起作用)
答案 0 :(得分:0)
这应该有效:
resp = self.client.get(url)
self.assertEqual(resp.status_code, 404)
通过以下方式运行测试:
python manage.py test
如果没有,请重新检查您的代码并提供错误消息。
答案 1 :(得分:0)
如果self.assertEqual不起作用,您可以尝试使用with标签,如下所示 assertRaises(exception, callable, *args, **kwds)
with self.assertRaises(Http404):
// your logic here
例如。我有一个可以返回订单或引发HTTP 404响应的函数
from django.http import Http404
def test_get_order_with_method_404(self):
client = MyPaymentClient("super_secret_key")
with self.assertRaises(Http404):
client.get_order_with_method("payment_id", "payment_method")
您也可以使用get_object_or_404
示例:
from django.http import Http404
from django.shortcuts import get_object_or_404
with self.assertRaises(Http404):
get_object_or_404(MyModel, some_argument="MyCriteria")
好吧,我想你明白了。希望这对您有所帮助!