我正在用生成django模型的factory_boy
构建一个工厂。我想看看用户输入的参数是什么。我的工厂看起来像这样
class SomeFactory(factory.django.DjangoModelFactory):
name = factory.Sequence(lambda n: 'Instance #{}'.format(n))
some_other_thing = factory.SubFactory(SomeOtherFactory)
class Meta:
model = SomeModel
现在用户可以说s = SomeFactory()
,它可以正常工作,但是我想检测用户是否输入了他们自己的参数。例如,判断用户是否传入了自己的名字,如s = SomeFactory(name='Matt')
到目前为止我所做的是
SomeFactory
类中编写我自己的__init__
函数
s = SomeFactory()
时,也不会在调用s.__init__()
时调用__new__
方法也是如此_adjust_kwargs
kwargs
,而不仅仅是用户定义的字段。例如,调用s = SomeFactory(name='Matt')
,我会得到一个kwargs
dict,其中包含name
和some_other_thing
的键,这就不可能告诉输入它们自己的参数与否_create
_adjust_kwargs
时仍然会遇到同样的问题,因为kwargs
不包含原始的{我想我所追求的很多功能都是在factory_boy
的StepBuilder
(我怀疑它是在instantiate
方法中)的黑框中的,但是我不知道如何修改它来实现我想要的功能。在
有没有人想知道在调用s = SomeFactory()
时,最初设置了哪个kwargs
?一、 确定如果我说s = SomeFactory(name='Matt')
,用户是否手动设置了名称?在
谢谢!在
更新:我正在运行django
版本1.11.2
,factory_boy
版本{
您可以重写
create
方法以仅获取用户kwargs。在完整的例子如下:
当我这么说的时候:
^{pr2}$如果您想为}方法执行此操作。在
create
以外的其他构建策略捕获kwargs,那么还需要为stub
和{相关问题 更多 >
编程相关推荐