I would like to test my url in django but I got error message.
here are my codes:
urls.py
url(r'^create/(?P<userName>[0-9a-zA-Z-]+)/$', views.create, name='create'),
test.py
from django.test import TestCase, Client
client = Client()
def test_create(self):
"""Test the url for "create"
"""
response = self.client.get('/mission/create/' + str(self.userName))
self.assertEqual(response.status_code, 200)
and i would get this result:
FAIL: test_create (mission.tests.MissionUrlTests)
Test the url for "create"
----------------------------------------------------------------------
Traceback (most recent call last):
File "/actinbox/mission/tests.py", line 122, in test_create
self.assertEqual(response.status_code, 200)
AssertionError: 301 != 200
Please help me with my codes here. Thank you in advance.
As @Selcuk said, you are missing the trailing slash in the URL. In order to avoid those typos and in case your URL will change some time, you should use django's reverse function to get URLs:
# django 1.x
from django.core.urlresolvers import reverse
# django 2.x
from django.urls import reverse
def test_create(self):
response = self.client.get(reverse('create', args=[self.userName]))
self.assertEqual(response.status_code, 200)