【发布时间】:2018-04-30 11:06:07
【问题描述】:
我正在尝试测试一个统计函数,该函数计算我的数据库中的对象类型。为此,我想为每个可能的模型字段组合创建至少一个实例。随机测试数据需要大量的测试对象来确保满足所有可能的组合。
这是我的一个模型中的一个简短示例:
class Member(models.Model)
is_active = models.BooleanField()
name = models.CharField()
balance = models.IntegerField()
division = models.ForeignKey(Division, on_delete=models.CASCADE)
Class Division(models.Model)
name = models.CharField()
这就是我现在使用 django_dynamic_fixture 的方式:
from django.test import TestCase
from django_dynamic_fixture import G
from members.models import Member
class StatisticsTestCase(TestCase):
def setUp(self):
for is_active in [True, False]:
for balance in [-100, 0, 100]:
for division in Division.objects.all()
G(Member, is_active=is_active, balance=balance, division=division)
但这看起来很糟糕,很难阅读。有没有更简单的方法可以更好地阅读代码来创建对象的所有可能的属性组合?
我对不同的测试数据生成器持开放态度,只要它们能很好地与 Python 3 和 Django 配合使用。
【问题讨论】:
标签: python django unit-testing fixtures