![](/img/trans.png)
[英]How do I unit test an __init__() method of a python class with assertRaises()?
[英]How do you test an instance method in Python with assertRaises?
我理解如何在函數或lambda上使用assertRaises
,但我想在實例方法上使用它。
因此,例如,如果我有一個無限精度算術的類calculator
,我可能會編寫測試:
def setUp(self):
self.calculator = calculator.calculator()
def test_add(self):
self.assertRaises(TypeError, self.calculator.add, ['hello', 4])
因為self.calculator.add
是可調用的,並且['hello', 4]
是我想傳遞它的參數,但是,當我運行測試時,我得到以下致命錯誤:
TypeError: add() missing 1 required positional argument: 'num2'
我相信它會拋出這個錯誤,因為當self.assertRaises
調用self.calculator.add
, self
不會像第一個調用那樣傳遞,就像調用實例方法時一樣。 我該如何解決?
正如其他答案所說,您必須單獨傳遞值,但您可能更容易閱讀的替代方法是使用with
語句:
def test_add(self):
with self.assertRaises(TypeError):
self.calculator.add('hello', 4)
當你以這種方式使用assertRaises
你只需在with
塊內部編寫代碼。 這意味着它是一種更自然的編碼方式,而且您不僅限於測試單個函數調用。
我認為提供了self
,但是assertRaises
希望你單獨列出參數。 嘗試:
self.assertRaises(TypeError, self.calculator.add, 'hello', 4)
您必須以這種方式傳遞值:
self.assertRaises(TypeError, self.calculator.add, arg1, arg2, arg3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.