2016-07-31 66 views
0

我试图编写一个测试,当试图打开一个文件读取时,通过调用open()嘲讽PermissionError。不过,我似乎无法得到测试工作。 PermissionError似乎被抛出,但我的测试失败,因为这一点,即使我试图断言它被抛出。Assert当嘲笑python3时抛出错误

下面包含我的尝试之一:

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

要么用'with'打开文件,要么手动关闭它。 –

回答

0

这将不起作用的原因是因为你嘲笑fileMethods.open,所以open函数(它提高了PermissionError你正在寻找)甚至没有被称为。

如果open函数被模拟(因此被调用的函数将不会执行任何操作),则不能断言调用该函数引发的异常。

它的工作方式是当你嘲笑一个函数时,默认情况下它不会做任何事情。查看文档here,这将更深入地解释这一点。

+0

那么我在模拟中引用了错误的开放吗?我将如何去测试'readFile'方法? – SJC