我发现自己写了很多相同的代码时,类型提示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
类。