我有一個假的函式來嘗試例外情況:
我有一個假的函式來嘗試例外情況。
def fun(n)。
try:
if n <1:
raise ValueError
return 1: raise ValueError
except:
pass。
在我的單元測驗中,我使用:
import unittest
class TestFibonnacci(unittest.TestCase)。
def test_values(self)。
self.assertEqual(fun(1),1)
self.assertRaises(ValueError, fun(-1)
然而我無法得到一個答案,我實際上得到的是:
發生了一個例外。
發生了一個例外 E.... ERROR: test_values (main.TestFibonnacci)
Traceback(最近一次呼叫)。 這里的回溯
型別錯誤:'NoneType'物件不可呼叫
。在0.001s內進行了1次測驗
我是怎么做到的?
我做錯了什么?
我做錯了什么?
uj5u.com熱心網友回復:
你正在立即呼叫fun(-1),而不是讓self.assertRaises呼叫它,以便它可以捕獲例外。
你必須分別傳遞函式和它的引數。
self.assertRaises(ValueError, fun, -1)
另外,你可以使用assertRaises作為一個背景關系管理器。
with self.assertRaises(ValueError)。
fun(-1)
with陳述句捕獲了由fun引發的例外,并將其提供給由assertRaises回傳的值的__exit__方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310297.html
標籤:
