Модульное тестирование функций CRUD в Django - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать базовый модульный тест для своего кода.Вот что я запускаю ...

from django.test import TestCase
from django.contrib.auth.models import User
from feed.models import Post

class PostTests(TestCase):

 def setUp(self):
    user = User.objects.first()
    Post.objects.create(title='test', content='more testing', author=user)

 def test_content(self):
    post = Post.objects.get(id=1)
    expected_object_name = f'{post.content}'
    self.assertEquals(expected_object_name, 'more testing')

Я получаю сообщение об ошибке: "django.db.utils.IntegrityError: (1048," столбец author_id 'не может быть нулевым ")" Iсчитаю, что ошибка находит пользователя, но когда я запускаю его в оболочке, он обновляется без проблем.

1 Ответ

0 голосов
/ 18 декабря 2018

Django создает отдельную базу данных для тестов, которая изначально пуста.Таким образом, User.objects.first() возвращает None.Затем вы передаете None как author при попытке создать сообщение.

Вам необходимо создать пользователя здесь.

В качестве альтернативы вы можете расширить с SimpleTestCase вместо TestCase и использовать что-то вроде фабричный мальчик .У него есть класс DjangoModelFactory, который вы можете использовать для создания фиктивных Model объектов, которые работают точно так же, как реальные экземпляры.

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