我有两份文件:
REF_FILE:它是一个包含更改数据的文件
TEST_文件:它是一个包含固定数据的文件(它只是一个给定时刻的REF_文件)
现在我要测试这个函数:
def get_info_from_extract(mpm):
fid = open(REF_FILE)
all_infos = json.load(fid)
fid.close()
for m in all_infos:
if m['mpm_id'] == mpm:
break
return m
class Test_info_magento(unittest.TestCase):
def test_should_have_value(self):
# GIVEN
mpm=107
expected_value = 1.345
# WHEN
#MOCK OPEN FUNCTION TO READ TEST_FILE
m = file_info.get_info_from_extract(mpm)
# THEN
self.assertEqual(m['value'], expected_value)
问题是“REF_FILE”经常更改,所以我无法正确测试它。所以我需要使用“TEST_FILE”,为此我需要模拟我的open函数。我无法找到如何模仿它,我想一些帮助,以找出如何正确地模仿它,以使它返回我的'测试'文件'
我建议重写函数,使其接受类似文件的对象(测试和维护会更容易)。在
但是,如果不能,请尝试此上下文管理器:
上下文管理器用自身替换全局标签- 它使用实际的文件,减慢测试速度-应该返回一个类似文件的对象
- 它是不可配置的-应该给它的构造函数一个文件名(或内容)。在
open
引用的内置函数(在with
语句块内)。{{cd4}调用的所有这不是最好的实现方式,因为:
相关问题 更多 >
编程相关推荐