在FactoryBoy中定義ModelFactory時,我需要訪問由SubFactory創建的另一個模型的屬性,並將其分配給此ModelFactory的屬性。FactoryBoy分配屬性到SubFactory的屬性
這就是我想做的事:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
created_by = factory.SubFactory(AdminUserFactory)**.id**
顯然不行,因爲沒有ADMINUSER對象來訪問MyModelFactory類定義的ID。
這是我做了什麼,但它是醜陋:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
dummy_created_by = factory.SubFactory(AdminUserFactory)
created_by = factory.LazyAttribute(lambda o: o.dummy_created_by.id)
@classmethod
def _create(cls, target_class, *args, **kwargs):
del kwargs['dummy_created_by']
return super(MyModelFactory, cls)._created(
target_class, *args, **kwargs)
我試圖通過Factory_Boy docs閱讀,但沒有看到一個類或函數,可以讓我懶洋洋地訪問屬性。有沒有人有什麼建議?
有一個原因,你不能只是建立相關模型,並通過該對象中MyModelFactory.create( )? –
@BrianDant是的,你絕對可以做到這一點。我只是在尋找一種能夠一氣呵成,儘可能乾的事情。 – emispowder
很酷。感謝您的澄清。 –