作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法定义命名参数(不是模型属性)来控制 factory.Maybe 的行为?
例如:我想创建一个命名参数,通过可能条件控制RelatedFactory的创建,我尝试这样做:
# factories.py
class Purchase(factory.DjangoModelFactory):
user = factory.SubFactory('project.factories.UserFactory')
total = uniform(10, 100)
class Meta:
model = Purchase
class UserFactory(factory.DjangoModelFactory):
first_name = factory.Faker('first_name')
last_name = factory.Faker('last_name')
has_purchase = False
purchases = factory.Maybe(
'has_purchase',
yes_declaration=factory.RelatedFactory(Purchase, 'purchase'),
no_declaration=None
)
class Meta:
exclude = ['has_purchase', 'purchases']
model = User
# tests.py
user_without_purchase = UserFactory.create()
user_with_purchase = UserFactory.create(has_purchase=True)
我似乎无法通过命名参数更改has_purchase 的值,它始终设置为False。不知道是不是因为这两个字段都声明在exclude Meta属性中。我必须将它们放在 exclude 中,否则 DjangoModelFactory 在将其保存到数据库时会尝试使用这些字段,这会导致完整性错误。
有办法吗?
最佳答案
工厂男孩似乎有一个功能可以提供额外的参数,而不必将这些字段添加到 exclude
属性:http://factoryboy.readthedocs.io/en/latest/reference.html#simple-parameters :
class UserFactory(factory.DjangoModelFactory):
class Params:
has_purchase = False
与 http://factoryboy.readthedocs.io/en/latest/reference.html#lazyattribute 结合使用也许?
关于python - Django + Factory Boy : How to use a named parameter to control behavior of factory. 也许+ factory.RelatedFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47435446/
我是一名优秀的程序员,十分优秀!