在更高层次的透视工作中,然而哪个是创建测试对象的首选方法,为什么?
澄清:出于测试目的,即测试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")
它被定义为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")
...