说我有module.py
class A():
INPUTS = {}
def __init__():
self.inputs = do_something(self.INPUTS)
class B(A):
INPUTS = function_with_external_API_call()
def something_to_test():
pass # do stuff
在我的单元测试中(使用pytest)我希望有一个B
的实例,以便我可以测试B.something_to_test()
。但是,导入班级B
会触发function_with_external_API_call()
。
此解决方案有效,但似乎是一个糟糕的解决方案。
with requests_mock.mock() as m:
m.get(
'https://url.com',
json={'data': [{'id': '1'}]}
)
from module import B
如何模拟函数调用,以便我可以导入类B
并用模拟值替换INPUTS
?
答案 0 :(得分:0)
我并不完全明白您尝试做什么,但INPUTS
在您的情况下是类属性。如果您想要修改INPUTS
&叫做,我认为这样做会更简单:
class A(object):
def __init__(self, mookup=None):
self.INPUTS = mookup
class B(A):
def __init__(self):
super().__init__(self.function_to_call)
def function_to_call(self):
pass
如果这不能解答您的问题,请为您的问题添加更多精确度吗?