我最近了解了如何使用 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用于更大的项目,很想在继续工作之前先弄清楚这一点。
答案 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}";
来解决。