在测试中使用断言语句

make assert语句打印漂亮的输出,包括source。

这使得 assert x == y 更有用,作为替代 self.assertEqual(x, y)

此插件实现 outcomeDetail() 并检查event.exc_信息如果它发现发生了断言错误,它将检查回溯并向错误报告添加其他详细信息。

配置 [pretty-assert]

always-on
违约

类型

布尔

示例配置

默认配置相当于在 unittest.cfg 文件。

[pretty-assert]
always-on = False

命令行选项

--pretty-assert DEFAULT

为“assert”语句添加漂亮的输出

插件类引用:prettyassert

class nose2.plugins.prettyassert.PrettyAssert(*args, **kwargs)[源代码]

为“assert”语句添加漂亮的输出

static addAssertDetail(extraDetail, exc, trace)[源代码]

向输出添加有关断言错误及其上下文的详细信息

ExtraDetail:将与换行符连接并添加到此测试失败的输出中的行的列表——定义为事件格式的一部分

exc:引发的断言器错误异常

trace:异常的回溯对象

断言语句检查

prettyassert插件通过检查引发 AssertionError . 与pytest的断言重写代码不同,它不修改内置的 AssertionError .

因此,它的功能有限——它只能报告 跳跃 该堆栈帧中的值。这意味着这种类型的声明工作得很好:

x = f()
y = g()
assert x == y

但这类声明不:

assert f() == g()

它仍然会运行,但prettyassert会告诉您 fg 是函数,而不是它们的计算结果。这可能不是你想要的。

属性分辨率

断言检查将解析属性,这样类似的表达式也可以工作:

assert x.foo == 1

但是请注意,属性 x.foo 将被解决 两次 在这种情况下,如果断言失败。一次在评估断言时,一次在检查断言时。

因此,在PrettyAssert检查下,具有动态值的属性的行为可能不符合预期。