【问题标题】:Python unit test how to assert message formatPython单元测试如何断言消息格式
【发布时间】:2013-02-19 12:01:34
【问题描述】:

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

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

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

我该怎么做? (我宁愿不编写任何额外的代码,只利用 python unittest 模块功能)

【问题讨论】:

标签: python unit-testing python-2.7


【解决方案1】:
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:盗自How to show the error messages caught by assertRaises() in unittest in Python2.7? :)

【讨论】:

  • "标准单元测试模块没有提供这样的方法。"错误,请参阅平静风暴的答案。但是,此解决方案适用于 python
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    相关资源
    最近更新 更多