2

我的 Python 单元测试代码如下所示

self.assertRaises(exc.UserError, module.function, args)

这基本上断言引发了 UserError 。但是,我找不到如何检查异常中的消息是否与我的正则表达式匹配。

我怎样才能做到这一点?(我不希望编写任何额外的代码,只利用 python unittest 模块功能)

4

2 回答 2

3
class ExtendedTestCase(unittest.TestCase):

    def assertRaisesWithMessage(self, msg, func, *args, **kwargs):
        try:
            func(*args, **kwargs)
            self.assertFail()
        except Exception as inst:
            self.assertEqual(inst.message, msg)

标准的 unittest 模块没有提供这样的方法。如果您更频繁地使用它,您可以使用上面的代码并从 ExtendedTestCase 继承。

PS:从如何在 Python2.7 的单元测试中显示 assertRaises() 捕获的错误消息中被盗?:)

于 2013-02-19T13:45:38.777 回答
2

Python 似乎在 2.7.3 中具有相同的方法,该方法名为“assertRaisesRegexp”,因此我们不(也不应该)编写自己的包装器:)

http://docs.python.org/2/library/unittest.html#unittest.TestCase.assertRaisesRegexp

于 2013-11-11T12:30:28.013 回答