在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
很酷。感谢您的澄清。 –