使用@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 中对象的引用?

在Firestore中创建对Cloud Storage文档的引用

使用类型转换在 unique_ptr 中创建对对象的引用

如何在 Laravel 中创建对 db 的查询?

如何在数据库项目中创建对动态数据库名称的引用?

在 C++ 中创建对三元运算符结果的 const 引用是不是安全?