我想在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