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
对象