假设我有一个名为boop.py
显示为:
import module_a
import sys
def boop(value):
val = module_a.boop_it(value)
# ...
return val
我的问题是:
在为此进行测试时,如何使module_a
成为虚拟模块?
我知道我需要隔离依赖项。我只是不了解它的机制
是否有必要将其完全隔离?如果我不这样做,它会咬我吗?
请注意,这是所有遗留代码,已经存在并有多年历史
答案 0 :(得分:1)
回答第二个问题“是否有必要完全隔离它?”:这取决于。即使您正在进行单元测试,通常也不必将代码与所有依赖项隔离。例如,您不会将代码与math.sin()
隔离。我什至会说,除非有原因,否则应避免创建测试双打。但是实际上,经常有一个原因。
这里有一些标准可以帮助您确定module_a
进行单元测试时依赖项是否在困扰您。它们都与组件依赖的属性(“ DOC”,在您的情况下为module_a
)有关,包括其传递依赖关系以及您的测试目标:
但是,即使以上条件表明依赖性使您感到困扰:请记住,对代码进行一些重新设计可能比创建测试对偶更可取。例如,通过将计算与交互放到不同的函数中来将计算与交互分开,可以避免您受到嘲笑:您可以使用单元测试来测试计算,而通过集成测试来测试交互。