为什么在 运行 Django TestCase 时没有创建对象

Why object is not being created while running Django TestCase

我使用 TestCase class 创建了一个简单的模型测试用例。我使用 setUp 函数创建了一个对象,并在另一个函数中使用 assertEqual 测试了对象的计数。

测试运行成功,但是当我查看Django admin时,没有我刚刚创建的对象,也没有名为django_test的table。

我的测试用例:

class TestContact(TestCase):

    def setUp(self):
        self.contact = Contact.objects.create(
            full_name = "John Van",
            email = "jon@gmail.com",
            phone = 9845666777,
            subject = "My query",
            message = "test message"
        )

    def test_contact_count(self):
        self.assertEqual(Contact.objects.count(),1)

此外,setUp 是一个内置函数,还是我们可以在其中创建对象时使用任何函数名称??

测试会创建与您的 'real' 数据库不同的单独的空白测试数据库。这意味着您的 Django 管理员将不会使用相同的测试数据库。

您可以在这里阅读更多内容: https://docs.djangoproject.com/en/3.2/topics/testing/overview/#the-test-database

关于 setUp,它是 TestCase class 的一部分,并且在每次测试之前调用。它本身什么都不做,你可以创建自定义函数来准备你的模型并在 setUp

中调用它们

您可以在这里阅读更多内容:https://docs.python.org/3/library/unittest.html#unittest.TestCase.setUp