使用@classmethod在django中创建对象以进行测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用@classmethod在django中创建对象以进行测试相关的知识,希望对你有一定的参考价值。
在更高层次的透视工作中,然而哪个是创建测试对象的首选方法,为什么?
澄清:出于测试目的,即测试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")
...
以上是关于使用@classmethod在django中创建对象以进行测试的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ActiveRecords 中创建对 Ruby 中对象的引用?