我正在尝试编写一个测试,在尝试打开文件进行阅读时,在调用PermissionError
时模仿open()
。但是我似乎无法让测试工作。 PermissionError
似乎被抛出,但我的测试因此而失败,即使我试图断言它被抛出。
下面是我的一次尝试:
fileMethods.py
def readfile(myfile):
with open(myfile, 'r') as file:
filecontent = file.read()
file.close()
return filecontent
fileMethods_test.py
def test_readfile_throws_PermissionError(self):
with mock.patch('fileMethods.open') as openMock:
openMock.side_effect = PermissionError
self.assertRaises(PermissionError, fileMethods.readfile('file_to_readin'))
我错过了一些明显的东西,或者我测试此方法的方式不正确?
答案 0 :(得分:0)
这不起作用的原因是因为您正在嘲笑fileMethods.open
,因此open
函数(提升您正在寻找的PermissionError
)甚至都没有被调用。
如果open
函数被模拟(因此,被调用函数将不执行任何操作),则无法断言该函数引发的异常被调用。
它的工作方式是,当你模拟一个函数时,默认情况下它不会做任何事情。查看文档here,这将进一步深入解释。