Тестовый клиент Django получает 404 для всех URL - PullRequest
2 голосов
/ 03 октября 2011

Я делаю свои первые эксперименты с тестированием django, и у меня проблема в том, что я всегда получаю шаблон 404 независимо от того, какой URL (даже /) я использую. Если я добавляю тот же самый код в оболочку django, он работает как положено и всегда представляет мне содержимое запрошенного URL.

class SimpleTest(TestCase):
    def setUp(self):
        self.user = User.objects.create_user('test', 'test', 'test')
        self.user.is_staff = True 
        self.user.save()
        self.client = Client()

    def test_something(self):
        self.assertTrue(self.client.login(username='test', password= 'test'))
        self.client.get("/")

Имя входа возвращает True, но get () не выполняется. Любые намеки, что я здесь делаю не так?

1 Ответ

5 голосов
/ 03 октября 2011

Имейте в виду, что большинство представлений используют что-то вроде get_object_or_404, get_list_or_404 или просто повышают Http404, когда возникает проблема с доступом к тому или иному объекту.Вам нужно убедиться, что ваша тестовая база данных заполнена достаточным количеством объектов для выполнения всех этих требований, чтобы представление не возвращало 404.

Помните, что при запуске тестов база данных откатываетсяпосле каждого теста (с использованием транзакций) , поэтому каждый метод теста должен стоять сам по себе, или метод setUp должен заполнять базу данных любыми необходимыми зависимостями.

...