【问题标题】:Unit testing CRUD functions in Django在 Django 中对 CRUD 函数进行单元测试
【发布时间】:2019-05-19 05:26:44
【问题描述】:

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

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 unit-testing testing automated-tests


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 2013-05-22
      • 1970-01-01
      • 2019-05-16
      • 2021-01-03
      • 1970-01-01
      • 2018-05-13
      • 2023-03-26
      • 2014-02-08
      相关资源
      最近更新 更多