这件事有多种解决方案。但首先,我必须指出,单元测试是为了测试单元。单位是什么可能是查看事物的问题。在您的情况下,我会说一个单元是函数a()
,因为您想测试您的单元是否正确运行,这意味着它b()
在正确的位置调用函数。一个不同的观点是说函数a()
和b()
是一个单元。然后你不喜欢检查函数是否b()
被调用,你只想测试函数调用的结果a()
。因此,请决定最适合您的情况。
如果您真的想将功能a()
作为一个单元进行测试,您应该准备好您的单元进行测试。在您的情况下,可以通过向其添加一个附加参数(默认为 function b
)来完成,并将使用该参数而不是硬编码的函数b()
调用 in a()
:
def a(self, subfunction=None):
is subfunction is None: # for testing
subfunction = self.b
data = self.get()
if len(data) > 3500:
subfunction()
现在您可以(在测试期间)注入一个帮助函数,它只是通知测试它被调用了:
store = None
def injected(*args, **kwargs):
global store
store = args, kwargs
obj.a(subfunction=injected)
# now check if global store is set properly