我試圖在一個條件引發自定義異常消息的函數內斷言異常.
功能:
if not Cart.objects.filter(member=member).count():
raise CartDoesNotExist("Cart Does Not Exist for Member: %s ( %id )." % (member.email,member.id))
現在,我能夠成功地產生獲得加注聲明所需的條件.
所以,我的測試用例看起來像這樣:
def Order_CartDoesNotExist(self):
self.assertRaises(CartDoesNotExist,Order.objects.create_order(member=self.member2,member_slot=self.memslot,order_type="Normal"))
當我運行測試時,輸出是一個錯誤.它給出了相同的錯誤CartDoesNotExist …..
所以我的問題是,如何提出這類例外?如何在我們的單元測試中涵蓋這些情況?我不想逃避這些條件因為它們很重要并且增加了代碼覆蓋率?
謝謝你們.
解決方法:
您的代碼直接調用create_order,這會引發異常.你需要改變它的調用方式.在Python 2.7中,您可以使用:
with self.assertRaises(CartDoesNotExist):
Order.objects.create_order(member=self.member2, member_slot=self.memslot, order_type="Normal"))
在這里,上下文管理器允許您直接調用代碼,上下文管理器將為您處理異常.
如果您使用2.6或更低版本運行:
self.assertRaises(CartDoesNotExist, Order.objects.create_order, member=self.member2, member_slot=self.memslot, order_type="Normal")
這里你沒有調用你的函數,你將它傳遞給assertRaises,以及它需要的參數,assertRaises將調用代碼并正確處理異常.
標簽:python,unit-testing
來源: https://codeday.me/bug/20190626/1289633.html