在 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()
由于工厂将值分配给工厂属性,因此无法对其调用重置。
然而这有效:
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()