簡體   English   中英

如何使用assertRaises在Python中測試實例方法?

[英]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.addself不會像第一個調用那樣傳遞,就像調用實例方法時一樣。 我該如何解決?

正如其他答案所說,您必須單獨傳遞值,但您可能更容易閱讀的替代方法是使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM