我想在Python中使用unittest做一個簡單的測試,看看如果一個類如果得到一個不適合的構造函數輸入的話就會拋出一個異常。這個類看起來是這樣的:在Python中測試 - 如何在使用unittest測試中使用assertRaises?
class SummaryFormula:
def __init__(self, summaryFormula):
self.atoms = {}
for atom in re.finditer("([A-Z][a-z]{0,2})(\d*)", summaryFormula):
symbol = atom.group(1)
count = atom.group(2)
if pocet != "":
self.atoms[ symbol] = int(count)
else:
self.atoms[ symbol] = 1
我的測試如下:
class ConstructorTestCase(unittest.TestCase):
def testEmptyString(self):
self.assertRaises(TypeError, ukol1.SummaryFormula(), "testtest")
if __name__ == '__main__':
unittest.main()
所有我想要的是測試失敗,這意味着不合適輸入爲構造函數中的異常沒有被處理。
取而代之,我得到一個錯誤:__init__() takes exactly 2 arguments (1 given)
。
我錯過了什麼?我應該指定什麼第二個參數?
此外,我應該使用什麼類型的錯誤來處理異常,即我的正則表達式無法匹配的輸入傳遞給構造函數?
謝謝,托馬斯
我不能直接運行的代碼,因爲是for循環附近的語法錯誤。你能糾正一下嗎? – pyfunc 2010-10-06 21:53:26
我認爲循環的縮進不正確 – pyfunc 2010-10-06 21:56:13
@pyfunc:對此抱歉。更正它。 – 2010-10-06 21:58:19