使用@classmethod在django中创建对象以进行测试

问题描述 投票:0回答:1

在更高层次的透视工作中,然而哪个是创建测试对象的首选方法,为什么?

澄清:出于测试目的,即测试model文件中创建的test_models.py

第一种方式:

使用@classmethods

class AuthorModelTest(TestCase):
    @classmethod
    def setUpTestData(cls):
        Author.objects.create(first_name="Big", last_name="Bob")

第二种方式:

或者通过self而不是指class

class AuthorModelTest(TestCase):
    def setUpTestData(self):
        Author.objects.create(first_name="Big", last_name="Bob")
python django
1个回答
1
投票

它被定义为TestCase中的classmethod,所以你应该在你的代码中做同样的事情。也许这两个版本现在都可以工作,但是在Django的未来版本中,它可能会破坏你的代码与Django的兼容性。你可以查看documentation

classmethod TestCase.setUpTestData():上面描述的类级原子块允许在类级别创建初始数据,一次用于整个TestCase。

只需按照文档中的示例操作:

from django.test import TestCase

class MyTests(TestCase):
    @classmethod
    def setUpTestData(cls):
        # Set up data for the whole TestCase
        cls.foo = Foo.objects.create(bar="Test")
        ...
© www.soinside.com 2019 - 2024. All rights reserved.