繁体   English   中英

为什么这个 django 测试失败了?

[英]Why is this django test is failing?

每当我运行test.py时,我都会得到:

(blog-1rz6wx-6) λ python manage.py test 正在为别名“default”创建测试数据库...系统检查未发现任何问题(0 沉默)。 .F.. ============================================== ========================失败:test_post_detail_view(blog.tests.BlogTests)---------------- ---------------------------------------------- ---- 回溯(最近调用最后):文件“C:\Users\ **** \Desktop\blog\blog\tests.py”,第 40 行,在 test_post_detail_view self.assertEqual(response.status_code, 200)断言错误:404!= 200

---------------------------------------------- ------------------ 在 0.776 秒内运行 4 次测试

失败(失败 = 1)正在销毁别名“默认”的测试数据库...

我的test.py代码:

def test_post_detail_view(self):
    response = self.client.get('/post/1/')
    no_response = self.client.get('/post/100000')
    self.assertEqual(response.status_code, 200)
    self.assertEqual(no_response.status_code, 404)
    self.assertContains(response, 'A good title')
    self.assertTemplateUsed(response, 'post_detail.html')

urls.pysettings.py 位于同一文件夹中:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('blog.urls')),
]

与 views.py 位于同一文件夹中的urls.py

from django.urls import path
from .views import BlogListView, BlogDetailView
urlpatterns = [
  path('post/<int:pk>', BlogDetailView.as_view(), name = 'post_detail'),
        path('',BlogListView.as_view(),name = 'home')
    ]

我不知道,当我将响应更改为response = self.client.get('')时,它确实给出了代码 200,但 TemplateUsed 显然变成了'home.html

预先感谢。

/post/1/端点似乎不存在。 您可能想尝试消除最后的/并确保您的固定装置导致创建具有该 ID 的帖子。

我看起来像您在 URL /post/1/中传递帖子 ID,但是当您在 Django 中运行测试时,它会创建一个单独的数据库。 要成功运行测试,您需要定义def setUp(self):并创建一个帖子以成功运行测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM