如何解决Django测试在响应状态代码404上引发错误
我正在跟着有关django测试的讲座,这是测试之一:
def test_invalid_flight_page(self):
max_id = Flight.objects.all().aggregate(Max("id"))["id__max"]
c = Client()
response = c.get(f"/flights/{max_id + 1}")
self.assertEqual(response.status_code,404)
当我运行manage.py测试时,它将在此测试上引发错误,实质上是说没有匹配的排期:
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.......E..
======================================================================
ERROR: test_invalid_flight_page (flights.tests.FlightTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Users\sarah\Desktop\airline\flights\tests.py",line 68,in test_invalid_flight_page
response = c.get(f"/flights/{max_id + 1}")
File "C:\Python\Python385\lib\site-packages\django\test\client.py",line 732,in get
response = super().get(path,data=data,secure=secure,**extra)
File "C:\Python\Python385\lib\site-packages\django\test\client.py",line 393,in get
return self.generic('GET',path,**{
File "C:\Python\Python385\lib\site-packages\django\test\client.py",line 470,in generic
return self.request(**r)
File "C:\Python\Python385\lib\site-packages\django\test\client.py",line 709,in request
self.check_exception(response)
File "C:\Python\Python385\lib\site-packages\django\test\client.py",line 571,in check_exception
raise exc_value
File "C:\Python\Python385\lib\site-packages\django\core\handlers\exception.py",line 47,in inner
response = get_response(request)
File "C:\Python\Python385\lib\site-packages\django\core\handlers\base.py",line 179,in _get_response
response = wrapped_callback(request,*callback_args,**callback_kwargs)
File "C:\Users\sarah\Desktop\airline\flights\views.py",line 21,in flight
flight = Flight.objects.get(pk=flight_id)
File "C:\Python\Python385\lib\site-packages\django\db\models\manager.py",line 85,in manager_method
return getattr(self.get_queryset(),name)(*args,**kwargs)
File "C:\Python\Python385\lib\site-packages\django\db\models\query.py",line 429,in get
raise self.model.DoesNotExist(
flights.models.Flight.DoesNotExist: Flight matching query does not exist.
----------------------------------------------------------------------
Ran 10 tests in 0.120s
FAILED (errors=1)
Destroying test database for alias 'default'...
但这就是要点,没有具有该ID的航班,因此该请求的响应状态代码应等于404。据我所知,我已经从讲座中准确地复制了该代码,但讲师的测试正在运行好的。谁能看到我可能想念的东西?
当我将期望的response.status_code更改为200 self.assertEqual(response.status_code,200)
时,它给了我同样的错误,因此这向我表明主要问题在于响应线吗?
请让我知道是否还有其他需要查看的内容。
解决方法
查询解析为空时,您的视图类未处理。在django
中,操作如下:
try:
result = SomeModel.objects.get(pk=some_id)
except SomeModel.DoesNotExist:
# Return 404 here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。