Django中CRUD函数的单元测试

Django中CRUD函数的单元测试,django,unit-testing,testing,automated-tests,Django,Unit Testing,Testing,Automated Tests,我正在尝试为我的代码创建一个基本的单元测试。这是我正在运行的 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='tes

我正在尝试为我的代码创建一个基本的单元测试。这是我正在运行的

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\u id”列不能为空”)“我相信错误是在查找用户,但当我在shell中运行它时,它会更新,没有问题。

django为测试创建一个单独的数据库,该数据库最初为空。因此,
User.objects.first()。然后,当您尝试创建帖子时,将
None
作为
author
传递

您需要在此处创建一个用户


或者,您可以从
SimpleTestCase
扩展,而不是从
TestCase
扩展,并使用类似的方法。它有一个
DjangoModelFactory
类,您可以使用该类创建虚拟
Model
对象,该对象的工作方式与实际实例类似。

Django为测试创建一个单独的数据库,该数据库最初为空。因此,
User.objects.first()。然后,当您尝试创建帖子时,将
None
作为
author
传递

您需要在此处创建一个用户

或者,您可以从
SimpleTestCase
扩展,而不是从
TestCase
扩展,并使用类似的方法。它有一个
DjangoModelFactory
类,您可以使用该类创建与实际实例类似的虚拟
Model
对象