假设我们有这些代码:
def judgement():
content = _get_config_content()
# do something in content
return content + '.'
def _get_config_content():
with open('test_config', 'r') as f:
return f.read()
我想测试judgement
函数,正如我们所看到的:判断函数正在调用_get_config_content()
,其目的是私有的,_get_config_content()
将打开文件并读取它。
并且最好存根文件读取部分,有两种方法可以存根文件读取逻辑:
存根私有
_get_config_content()
函数,并使其仅返回假结果。存根内置
open
函数,并使其返回假文件对象。
哪种方式更好? 还是有其他方法可以在单元测试中存根文件系统?
在这种情况下,我建议存根_get_config_content()
:a(它更简单,因为您只需要存根一个函数。 b( 你不会损失太多,因为单元测试_get_config_content()
没有太多价值:无论如何,这个函数应该在集成测试中进行测试。