这件事有多种解决方案。但首先,我必须指出,单元测试是为了测试单元。单位是什么可能是查看事物的问题。在您的情况下,我会说一个单元是函数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