[英]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.py与settings.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.