由于工厂将值分配给工厂属性,因此无法对其调用 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()
但肯定有更好的方法可以做到这一点吗?
字段声明通过类保持可用:
CountryFactory.code2.reset()
您还可以通过类的 _meta
属性访问工厂的声明对象:
CountryFactory._meta.declarations['code2'].reset()