Django AssertionError: 404!= 200 в классе простых юнит-тестов
Это мой класс Simple Test, при выполнении этого теста я получаю AssertionError: 404!= 200
class SimpleTest(unittest.TestCase):
def setUp(self):
# Every test needs a client.
self.client = Client()
def test_details(self):
# Issue a GET request.
response = self.client.get('/men/ethnic-wear/')
print "code:",response.status_code
# Check that the response is 200 OK.
self.assertEqual(response.status_code, 200)
Но если я тестирую то же самое в оболочке Django, он возвращает код состояния 200.
In [21]: from django.test import Client
In [22]: c = Client()
In [23]: response = c.get('/men/ethnic-wear/')
In [24]: response.status_code
Out[24]: 200
В первый раз, когда я пишу скрипт модульного теста со ссылкой на официальный документ, есть ли проблемы с моими взглядами?
1 ответ
Это говорит о том, что вы пытаетесь получить объект, которого нет в тестовой базе данных. Обратите внимание, что юнит-тесты создают свою собственную базу данных, которая пуста. Что вам нужно сделать, это просто добавить объекты для проверки базы данных в setUp
функция.
Как прототип:
class SimpleTest(unittest.TestCase):
def setUp(self):
# Every test needs a client.
self.client = Client()
Men.objects.create('''whatever attributes here''')
# and so on. for each prerequisite that should be there in db
def test_details(self):
# Issue a GET request.
response = self.client.get('/men/ethnic-wear/')
print "code:",response.status_code
# Check that the response is 200 OK.
self.assertEqual(response.status_code, 200)