为什么django测试失败了?

时间:2020-10-27 03:42:29

标签: python django testing url

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

(blog-1rz6wx-6)λpython manage.py test为创建测试数据库 别名“默认” ...系统检查未发现问题(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) AssertionError:404!= 200

--------------------------------------------------- -----------------------在0.776秒内进行了4次测试

FAILED(failures = 1)正在销毁测试数据库的别名'default'...

我的 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

谢谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我好像您正在URL col1 col2 0 1 3 1 2 4 中传递帖子ID,但是当您在Django中运行测试时,它将创建一个单独的数据库。要成功运行测试,您需要定义 function formatDate(date) { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var monthIndex = date.getMonth(); var year = date.getFullYear(); var day = date.getUTCDate(); return monthNames[monthIndex] + ' ' + year + ' ' + day; } $( function() { $( "#slider2" ).slider({ range: "min", min: new Date().getTime(), max: new Date('2020-11-15T00:00:00').getTime(), step: 1, slide: function( event, ui ) { $( "#spinner2" ).val( ui.value ); $( "#amount" ).val( formatDate(new Date(ui.value))); } }); } ); $( "#spinner2" ).spinner({ min: 7, max: 21, spin: function (event, ui) { $("#slider2").slider("value", ui.value); } }); 并创建一个帖子以成功运行测试。

相关问题