模型和工厂的一个真实来源



我发现自己写了很多相同的代码时,类型提示JSON响应的API,例如:

class Foo(TypedDict):
foo: int
baz: str

来自json响应:

{
'foo': 1,
'baz': 'somestr'
}

我现在想写一些工厂,这样我就可以模拟和测试这个端点。所以我必须写一个非常相似的:

class FooFactory(factory.DictFactory):
foo = Faker("random_int")
baz = Faker("text")

同时维护它们是相当痛苦的。我有没有办法让工厂使用Foo作为"灵感"?——我。如果类型提示是str,那么使用Faker("text"),类型提示是int,那么使用Faker("random_int")等等……

?I have try:

class FooFactory(factory.DictFactory):
class Meta:
model = Foo

但这似乎并没有真正做任何值得注意的-因为它只是在我的测试中返回{}


我也不限于TypedDicts或factoryboy。我只是不想写同样的东西两次:)

这是为factory_boy计划的特性,参见https://github.com/FactoryBoy/factory_boy/issues/836。

这个问题指出了可以在你的代码中重用的草案实现,通过子类化Factory类。

最新更新