2016-07-31 96 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