Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用@classmethod在django中创建对象以进行测试_Python_Django - Fatal编程技术网

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

Python 使用@classmethod在django中创建对象以进行测试,python,django,Python,Django,这两种方法都在更高层次的透视图上工作,但是,哪种方法是创建测试对象的首选方法,为什么 澄清:用于测试目的,即用于测试在test_models.py文件中创建的模型 第一种方式: 使用@classmethods class AuthorModelTest(TestCase): @classmethod def setUpTestData(cls): Author.objects.create(first_name="Big", last_name="Bob") 第

这两种方法都在更高层次的透视图上工作,但是,哪种方法是创建测试对象的首选方法,为什么

澄清:用于测试目的,即用于测试在test_models.py文件中创建的模型

第一种方式:

使用@classmethods

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

或者传递自我,而不是指班级


它在TestCase中被定义为classmethod,因此您应该在代码中也这样做。也许这两个版本现在都可以工作,但在Django的未来版本中,它可能会破坏代码与Django的兼容性。你可以查一下电话号码

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

只需遵循文档中的示例:

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")
        ...
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")
        ...