【发布时间】:2021-03-07 17:58:20
【问题描述】:
test.py
from django.test import TestCase, Client, SimpleTestCase
from django.urls import reverse, resolve
from .models import BlogappModel
from django.contrib.auth import get_user_model
from .views import Blogapphome, Blogpostview
class TestUrls(SimpleTestCase):
def test_list_view_url(self):
url = reverse('blogapp')
self.assertEqual( resolve(url).func.view_class, Blogapphome)
def test_detail_view_url(self):
url = reverse('blogpost', args=[1,])
self.assertEqual( resolve(url).func.view_class, Blogpostview)
class BlogTest(TestCase):
def setUp(self):
self.user = get_user_model().objects.create(
username='testuser',
email='test@gamil.com',
password='secrete'
)
self.post = BlogappModel(
title='testing',
author=self.user,
post='bla bla bla',
)
def test_post_detail_view(self):
response = self.client.get(reverse('blogpost', args=[self.post.pk]))
self.assertEqual(response.status_code , 200)
print('All tests are successful')
当我运行此代码时,它返回 django.urls.exceptions.NoReverseMatch: Reverse for 'blogpost' with arguments '(None,)' not found. 1 pattern(s) tried: ['blogapp/post/(?P<pk>[0-9]+)/$'],但正如您在我的 urls.py 中看到的,当我使用 args=[1] 时,它返回 404!=200
urlpatterns = [
path('', views.Blogapphome.as_view(), name='blogapp'),
path('post/<int:pk>/', views.Blogpostview.as_view(), name='blogpost')
]
第二个路径是指那个 url,但为什么它在 test.py 中不起作用,
【问题讨论】:
-
您是否在设置中创建博文?
-
是的,我正在创建一篇博文,以便创建更多测试来检查其内容。
标签: django django-testing