python - 创建对象以进行测试的一些 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 对象。但它还需要在其旁边创建其他三个对象。有人可以在这里给我任何建议,无论是数据库设计、测试设计还是其他方面。
解决方案
我使用django-autofixture,您可以使用它来快速创建对象,它会根据字段类型用随机数据填充您的字段,或者可以指定您希望创建的对象在某个字段中具有的数据。
如果您告诉它这样做,它也将遵循关系。它有很多功能。
感谢@HåkenLid 提供这个有用的链接:https ://djangopackages.org/grids/g/fixtures/
快乐的测试。
推荐阅读
- excel - 使用数组中的值构建表
- asp.net - 我可以为 Razor 页面使用第三方视图引擎吗?
- javascript - 如何使用 if 语句重构此代码
- mysql - 食品库存和食谱数据库中的 MySQL 查询
- r - R中的cm.colors()是什么调色板?
- react-native - React Native - 当用户移动它时展开折叠的标题
- python - 分层嵌套平面列表的递归函数
- supabase - Supabase 第三方 oAuth 提供者返回 null?
- c++ - 自定义着色器/材质在自定义 QQuickItem 对象中不起作用
- javascript - Clever Programmer 构建的 NodeJS 和 socket.io Zoom Clone 如何添加用户名?