Python 单元测试:让鼻子显示失败的断言值

发布于 2024-09-16 17:30:20 字数 129 浏览 8 评论 0原文

是否可以显示失败的断言值?它显示了回溯以及抛出了哪种异常,但知道哪些值失败会更实用。

例子:

assert result.file == file
AssertionError

is it possible to show the assertion values that failed? It shows the traceback and what kind of exception was throw but it would more practical to know which values failed.

Example:

assert result.file == file
AssertionError

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

静水深流 2024-09-23 17:30:20

您应该运行nosetests -d,这将显示断言中比较失败的对象的值。

You should run nosetests -d this will display the values of the objects that fail the compare in assert.

夕色琉璃 2024-09-23 17:30:20

assert result.file == file, "%s != %s" % (result.file, file,)

这就是为什么丑陋的 self.assert 方法是在 unittest.TestCase 中引入,而不是漂亮而简短的断言:self.assert 方法知道如何显示失败消息。

顺便说一句,我认为鼻子做了一些黑魔法,所以在简单的情况下

assert a == b

应该显示有意义的错误消息。

assert result.file == file, "%s != %s" % (result.file, file,)

That's why ugly self.assert<Foo> methods were introduced in unittest.TestCase instead of nice and short asserts: self.assert<Foo> methods know how to display failure messages.

By the way, I thought that nose do some black magic so in simple cases

assert a == b

should show meaningful error message.

七禾 2024-09-23 17:30:20

另一种可能性:定义自己的函数来完成这个技巧:

def assert_eq(obt, exp):
    assert obt==exp, "\n*Expected:\n%s\n*Obtained:\n%s" % (exp, obt)

您可以调用它而不是 assert

assert_eq ( self.data['SQ'].code, "SQ" )

这会返回这个不错的错误:

AssertionError

Another possibility: define your own function that does the trick:

def assert_eq(obt, exp):
    assert obt==exp, "\n*Expected:\n%s\n*Obtained:\n%s" % (exp, obt)

You can call it instead of assert:

assert_eq ( self.data['SQ'].code, "SQ" )

And this returns this nice error:

AssertionError

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文