Тестовый сценарий Django для тестирования моделей не сработал - PullRequest
1 голос
/ 20 марта 2019

Я пишу контрольный пример для моей модели, чтобы проверить __str__, но, видимо, он не работает.

Вот мой tests.py :

from todoapp.models import User, Task
from django.test import TestCase


class UserModelTest(TestCase):
    def setUp(self):
        self.user = User.objects.create(
            first_name='john',
            last_name='doe',
            email='abc@example.com',
            password='johndoe')

    def test_string_representation(self):
        object_name = User.objects.get(id=50)
        expected_object_name = object_name.email
        self.assertEqual(expected_object_name, str(object_name))

Вот мои models.py :

class User(AbstractUser):
    username = None
    email = models.EmailField(unique=True)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name']

    def __str__(self):
        return self.email

приписка : Пользователь с id=50 уже существует

1 Ответ

3 голосов
/ 20 марта 2019

Django создает тестовую базу данных при запуске теста, поэтому похоже, что пользователь с id=50 не существует в тестовой базе данных.

Вы уже создаетеuser в методе setUp, поэтому я советую вам выбрать этого пользователя в тесте.

def test_string_representation(self):
    object_name = User.objects.get(email='abc@example.com')
    expected_object_name = object_name.email
    self.assertEqual(expected_object_name, str(object_name))

Обратите внимание, что обычно вы не должны полагаться на id при извлечении объектов во время тестов.Идентификатор может изменяться от запуска к запуску, например, если тесты выполняются в другом порядке.

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