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

Первый раз, когда я пишу сценарий модульного тестирования со ссылкой на официальный документ, есть ли проблемы с моими представлениями?


person Avinash KS    schedule 15.02.2016    source источник
comment
Что делает вид? Может ли он сам вернуть 404? Покажи код.   -  person Daniel Roseman    schedule 15.02.2016
comment
В ваших тестах действует тот же urls.py, что и в Django?   -  person das-g    schedule 15.02.2016


Ответы (1)


Похоже, вы пытаетесь получить объект, которого нет в test db. Обратите внимание, что модульные тесты создают свою собственную базу данных, которая пуста. Вам нужно просто добавить объекты в тестовую базу данных в функции 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)
person Ahmed Hosny    schedule 15.02.2016