在 Factoryboy 中重置工厂迭代器

Reset Factory Iterator in Factoryboy

由于工厂将值分配给工厂属性,因此无法对其调用重置。

然而这有效:

CODE2_ITERATOR = Iterator(['PH', 'CN', 'SE', 'ES', 'DK' ])

class CountryFactory(DjangoModelFactory):
    class Meta:
    model = Country

    name = 'The Philippines'
    code2 = CODE2_ITERATOR
    phone = "63"

然后在您的 tearDown 方法中:

def tearDown(self):
    CODE2_ITERATOR.reset()

但肯定有更好的方法来做到这一点?

字段声明通过 class 保持可用:

CountryFactory.code2.reset()

您还可以通过class'_meta属性访问工厂的声明对象:

CountryFactory._meta.declarations['code2'].reset()