Почему я получаю сообщение об ошибке при запуске двух тестов в Django APITestCase? - PullRequest
1 голос
/ 22 января 2020

Я делаю тесты для моего API. Когда я запускаю два теста, я получаю ошибку apps.users.models.DoesNotExist: User matching query does not exist. в строке self.user = User.objects.get(pk=48) во втором втором тесте . Но если я запускаю только один тест, тест пройден. В чем причина?

class MyTestCase(APITestCase):
    def setUp(self):
        user_data = []
        for i in range(1, 124):
            user_data.append({
                'email': 'first@mail.com'+str(i),
                'first_name': "firstname"+str(i),
                'last_name': "lastname"+str(i),
                'ip_address': "192.168.0."+str(i),
            })
        users = User.objects.bulk_create([User(**i) for i in user_data])
        self.user = User.objects.get(pk=48)   # I get error in this line

    def test_users_list(self):
        ...

    def test_users_pagination(self):
        url = reverse('users-list')
        self.client.force_authenticate(self.user)
        response = self.client.get(url, {'users_count': 24, 'page': 2})

1 Ответ

0 голосов
/ 22 января 2020

Метод setUp вызывается перед каждым тестом, который вы определяете в тестовом примере. Происходит то, что первый тест запускает setUp и создает пользователей со значениями pk в диапазоне от 1 до 123, а второй тест создает пользователей со значениями pk от 124 до 246, поэтому нет пользователя с pk=48.

Попробуйте выбрать пользователя на основе другого атрибута, например email='first@mail.com48', и все будет хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...