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)
Другие вопросы по тегам