You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django测试客户端返回404,但Shell中运行正常,求问题原因

Django测试时首页返回404但本地运行正常的问题排查

问题背景

本地通过python manage.py runserver运行项目时,访问首页路径/一切正常,但执行python manage.py test运行测试用例时,测试代码返回404错误,断言失败。

测试代码(test_urls.py)

from django.test import Client, TestCase


class StaticURLTests(TestCase):
    def setUp(self):
        self.guest_client = Client()

    def test_homepage(self):
        response = self.guest_client.get("/")
        self.assertEqual(response.status_code, 200)

报错信息

❯ python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
F
======================================================================
FAIL: test_homepage (posts.tests.test_urls.StaticURLTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/finegorko/Development/Yandex.Practicum/hw03_forms/yatube/posts/tests/test_urls.py", line 10, in test_homepage
    self.assertEqual(response.status_code, 200)
AssertionError: 404 != 200

----------------------------------------------------------------------
Ran 1 test in 0.003s

FAILED (failures=1)
Destroying test database for alias 'default'...

可能的问题及解决方法

  • 根路径URL未正确配置
    检查项目根目录下的urls.py,确认根路径/是否映射到了正确的视图。比如是否存在如下配置:

    from django.contrib import admin
    from django.urls import path, include
    from posts.views import index  # 假设首页视图为index
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', index),  # 确保根路径指向首页视图
        # 或者通过include关联app的urls:path('', include('posts.urls'))
    ]
    

    如果根路径没有对应的URL配置,测试环境下访问/就会返回404。

  • 目标app未添加到INSTALLED_APPS
    打开项目的settings.py,检查INSTALLED_APPS列表是否包含你的posts应用:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'posts',  # 必须添加此行,否则Django无法识别app的URL配置
    ]
    
  • 首页视图依赖数据库数据,测试库为空导致404
    若首页视图中使用了get_object_or_404这类逻辑,当测试数据库中没有对应数据时,视图会返回404。可以检查视图代码,或者在测试的setUp方法中提前创建必要的测试数据。

  • URL配置存在前缀冲突
    如果项目主urls.py中给posts app的URL添加了前缀(比如path('posts/', include('posts.urls'))),那么根路径/并不会指向posts的首页视图,此时需要修改测试用例中的请求路径(比如改为/posts/),或者调整主URL配置去掉前缀。

内容的提问来源于stack exchange,提问作者finegorko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:27:32