我尝试使用Python模拟库来模拟zipfile模块的一些方法。在
我要测试的示例源:
def zipStuff(listOfPathToFiles):
with ZipFile(fName, 'w') as archive:
for each in listOfPathToFiles:
archive.write(each, strippedfName)
return archive
对于正常执行,上面的“归档”将被忽略,但将是测试期间的文件列表。在
单元测试代码示例:
^{pr2}$现在,我想嘲笑存档.写入因此,它不是实际的write调用,而是被mockWrite函数替换,这样我就可以得到所有应该压缩的文件的列表。在
我试过:
mockZip.write = Mock(side_effect=mockWrite)
但没人叫这个。调试显示函数正在调用mockZip。enter().write。如果我尝试:
mockZip.__enter__().write = Mock(side_effect=mockWrite)
Python发出“list”没有属性write的错误(这是正确的)。我是Mock和Python的新手,如果有任何提示,我将非常感谢。建议?在
与其让
mockZip.__enter__
返回空列表,不如让它返回如下对象:您可以根据需要添加方法和实现,以满足您的模拟需求。在
我相信您的问题是函数是使用contextlib(https://docs.python.org/2/library/contextlib.html)调用enter而不是entry。更改此模拟应该可以解决您的问题。在
相关问题 更多 >
编程相关推荐