django - Django 中的单元测试 CRUD 功能

标签 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='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, “Column 'author_id' cannot be null”)”我相信错误是在寻找用户但是当我在 shell 中运行它时更新没有问题。

最佳答案

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

您需要在这里创建一个用户。

或者,您可以从 SimpleTestCase 而不是 TestCase 进行扩展,并使用类似 factory boy 的东西.它有一个 DjangoModelFactory 类,您可以使用它来创建像真实实例一样工作的虚拟 Model 对象。

关于django - Django 中的单元测试 CRUD 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53839058/

相关文章:

python - Django 如何从单个 View 到单个模板获取多个查询集的多个 context_object_name

python - 基于输入类型的Django查询集

python - 用python写的最好的搜索引擎

php - 测试异常 PHPUnit

javascript - 在此模块外的 Node.js 模块中模拟构造函数(或其他函数)

android - 不同的 sqlite 数据库,用于在 android 应用程序中进行测试和实际使用

scala - ScalaTest 3 中的评估和生产去了哪里?

python - 使用外部 Web 服务的 Django 身份验证

c - 嵌入式系统到 Web 输出的 Unity 测试

algorithm - 归并与插入排序的实证分析——难点