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')
When I'm running this code it returns django.urls.exceptions.NoReverseMatch: Reverse for 'blogpost' with arguments '(None,)' not found. 1 pattern(s) tried: ['blogapp/post/(?P<pk>[0-9]+)/$'] but as you can see in my urls.py and when I use args=[1] it's returning 404!=200
urlpatterns = [
path('', views.Blogapphome.as_view(), name='blogapp'),
path('post/<int:pk>/', views.Blogpostview.as_view(), name='blogpost')
]
second path is referring to that url but why it's not working in test.py,