我正在改变一些单元测试所涵盖的代码。在单元测试内部会发生这样的事情:
def create_object(cls, arg1=None, arg2=None, arg3=None, **kwargs):
kwargs['arg1'] = arg1 or DEFAULT1
kwargs['arg2'] = arg2 or DEFAULT2
kwargs['arg3'] = arg3 or DEFAULT3
return cls(kwargs)
基本上是一堆允许我们在编写测试时使用速记的东西。
我刚刚完成了一个重构,这意味着传入的一些未实例化的对象类需要一个非kwarg参数。重构在代码体中是有意义的,但导致测试失败。
鉴于我不想从头开始重写所有失败的测试,最简单的解决方案就是
if isinstance(cls, Foo):
return cls(kwargs, True)
else:
return cls(kwargs)
这当然失败了,因为cls
实际上并不是Foo
实例的任何实例。
目前我有一个hacky解决方案,包括向kwargs
添加一个标志,然后检查它是否存在,如果是,则pop
从列表中ping它。
有没有更好的方法来检查函数对象是否会返回另一个类的实例?
答案 0 :(得分:1)
这听起来像你想要的
issubclass(cls, Foo)