首页 > 解决方案 > 创建对象以进行测试的一些 Django 最佳实践是什么

问题描述

我一直在测试需要创建临时对象的代码的方式似乎很混乱。我希望有一种更清洁、更直观的方式来做这件事。

在设置时,我运行一个函数 setUpTestData,它负责创建我的测试以后可能使用的临时对象。由于 ForeignKey 关系,我必须在其中创建嵌套对象,这变得有点混乱。

这是我正在使用的示例:

class Test_query_alarm(TestCase):

    @classmethod
    def setUpTestData(cls):
        Device.objects.create(
            site=Site.objects.create(
                group=Group.objects.create(
                    name='TestGroup'
                ),
                name='TestSiteName',
                address='TestAddress',
                gps_coordinates='TestGpsCoordinates',
                contact=Contact.objects.create(
                    first_name='TestFirstName',
                    last_name='TestLastName',
                    phone='TestPhoneNumber',
                    email='test@gmail.com'
                )
            ),
            ip_address='ip-here',
            snmp_port_number='port-here',
            http_port_number='port-here',
            location='Houston',
            snmp_version='SNMPV2',
            type='Modem',
            manufacturer='Commscope'
        )

如您所见,我正在生成 Device 对象。但它还需要在其旁边创建其他三个对象。有人可以在这里给我任何建议,无论是数据库设计、测试设计还是其他方面。

标签: pythondjangounit-testingdjango-testingtestcase

解决方案


我使用django-autofixture,您可以使用它来快速创建对象,它会根据字段类型用随机数据填充您的字段,或者可以指定您希望创建的对象在某个字段中具有的数据。

如果您告诉它这样做,它也将遵循关系。它有很多功能。

感谢@HåkenLid 提供这个有用的链接:https ://djangopackages.org/grids/g/fixtures/

快乐的测试。


推荐阅读