0
我想設置os.listdir在UT中引發OSError,但它不會引發任何事情。Python MagicMock到os.listdir不會引發錯誤
我的代碼:
def get_list_of_files(path):
try:
list_of_files = sorted([filename for filename in
os.listdir(path) if
filename.startswith('FILE')])
except OSError as error:
raise Exception(error)
return list_of_files
def setUp(self):
self.listdir_patcher = patch('os.listdir')
self.mock_listdir = self.listdir_patcher.start()
self.mock_listdir_rv = MagicMock()
self.mock_listdir.return_value = self.mock_listdir_rv
def tearDown(self):
self.listdir_patcher.stop()
def test(self):
e = OSError('abc')
self.mock_listdir_rv.side_effect = e
with self.assertRaises(OSError):
get_list_of_files('path')
問題是什麼? (我不能正常使用模擬到os.listdir)
get_list_of_files()是什麼樣子的?它如何使用'os.listdir()',你是否導入'os'或者你是否使用'from os import listdir'? –
您不需要爲'self.mock_listdir.return_value'顯式創建'MagicMock'實例。這是*默認*。 –
'get_list_of_files'使用'os.listdir'獲取列表,然後過濾它...不復雜 – tmsblgh