我想将 FactoryBoy 与用户/配置文件模式一起使用,如其文档中所述。
class ProfileFactory(DjangoModelFactory):
class Meta:
model = Profile
first_name = lazy_attribute(lambda o: faker.first_name())
user = SubFactory('profiles.tests.factories.UserFactory', profile=None)
class UserFactory(DjangoModelFactory):
class Meta:
model = settings.AUTH_USER_MODEL
username = lazy_attribute(lambda o: faker.first_name())
profile = RelatedFactory(ProfileFactory, 'user')
现在我希望能够通过仅提供用户名来创建用户
u = UserFactory(username='alice')
并自动获取用户名作为配置文件中的 first_name ( ='Alice'
)
或 first_name 之类的
u = UserFactory(profile__first_name='Bob')
='bob'
并根据给定的 first_name获取用户名 ( )
或者,如果我很活泼,提供用户名和名字,当然保留两者
u = UserFactory(username='alice', profile__first_name='Bob')
到目前为止,我还没有找到实施这种行为的合适地点。我尝试了覆盖_generate()
,但发现这不是正确的位置,因为此时我的惰性属性已经触发。我也无法覆盖__call__()
或__new__()
在我的UserFactory
.
也许这都是因为我对 python 还很陌生,所以我会感谢任何帮助我朝着正确方向前进的帮助。