2016-09-22 77 views
2

我不知道如何創建一個Python單元測試來檢查,如果字典返回KeyError異常。我認爲,單元測試會調用字典密鑰,因此它看起來像這樣:Python的單元測試字典斷言KeyError異常

def test_dict_keyerror_should_appear(self): 
    my_dict = {'hey': 'world'} 
    self.assertRaises(KeyError, my_dict['some_key']) 

但是,我的測試只會出錯誤了KeyError異常,而不是聲稱一個KeyError異常發生。

+0

貌似http://stackoverflow.com/questions/11371849/testing-exception-message-with-assertraise#11371899的欺騙 –

回答

1

爲了解決這個我用lambda調用詞典鑰匙引發錯誤。

def test_dict_keyerror_should_appear(self): 
    my_dict = {'hey': 'world'} 
    self.assertRaises(KeyError, lambda: my_dict['some_key']) 
1

另一種選擇是使用operator.getitem

from operator import getitem 

self.assertRaises(KeyError, getitem, my_dict, 'some_key')