Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django测试在响应状态代码404上引发错误_Python_Django_Django Testing_Django Tests - Fatal编程技术网

Python Django测试在响应状态代码404上引发错误

Python Django测试在响应状态代码404上引发错误,python,django,django-testing,django-tests,Python,Django,Django Testing,Django Tests,下面是关于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

下面是关于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, secure=secure, **{
  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\u code更改为200
self.assertEqual(response.status\u code,200)
时,它会给出相同的错误,因此这向我表明主要问题在于响应行?
如果您还需要查看其他内容,请告诉我。

当查询解析为空时,您的视图类将无法处理。在
django
中,操作如下:

try:
    result = SomeModel.objects.get(pk=some_id)
except SomeModel.DoesNotExist:
    # Return 404 here