Pytest断言在AssertionError上没有显示差异

时间:2018-10-26 04:36:04

标签: python pytest

我最近了解了如何使用 Pytest 在Python中进行单元测试。在Repl.it中,我通过对两个应该失败的字符串进行简单的断言来解决它。

git checkout feature/a
git merge origin/master #if you are fond of merge, to keep history accurately
git rebase origin/master #if you are fond of rebase, to keep history cleaner

哪个因错误而失败 import pytest assert 'a' == 'b'

但是Pytest不打印'a'或'b'。这对调试非常有帮助,因为我可以比较2个不同字符串之间的差异。 unittest 模块默认具有此功能。 Pytest是否具有此功能?如果没有,我如何启用它?我正在将Pytest用于更大的项目,很想在继续工作之前先弄清楚这一点。

2 个答案:

答案 0 :(得分:0)

如果要查看断言错误,请在assert语句后添加一个字符串。这不是pytest问题。 示例:assert a == b , "a:{} is not equal to b:{}".format(a,b)

这将输出:

In [5]: assert a == b , "a:{} is not equal to b:{}".format(a,b)
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-5-35a1ba6dcf42> in <module>()
----> 1 assert a == b , "a:{} is not equal to b:{}".format(a,b)

AssertionError: a:5 is not equal to b:6

有关python断言的更多信息:https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement

答案 1 :(得分:0)

如果您的断言代码在外部帮助器函数中,还请参见assertion rewriting

这对我来说是个问题,但是可以通过在测试目录的setText($body)中添加$body = "You have received a new message from HMP Reseller contact form.\n\n"."Here are the details:\n\nName: ${name}\n\nEmail: ${email}\n\nPhone: ${phone}\n\nMessage:\n${message}"; 来解决。