首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能钩住pytest断言失败吗?

我能钩住pytest断言失败吗?
EN

Stack Overflow用户
提问于 2020-04-15 22:27:31
回答 1查看 35关注 0票数 1

我花了大量时间查看失败的pytest输出,以了解为什么两个对象或两个对象集合不完全匹配。

代码语言:javascript
复制
def test_flidgets_are_equal(expected_flidgets):
   assert Flidgitator(44) == expected_flidget

即使使用-vv选项,pytest的默认打印输出也是一团糟。对于任何类型的复杂对象(更不用说对象列表),都不能正确地对齐,很难看到不匹配的位置,甚至两个集合是否具有相同的基数。

好了,我写了一个很酷的东西来漂亮地打印对象和(排序的)对象列表之间的差异。我可以调试一个失败的测试,并像这样使用它:

代码语言:javascript
复制
$ pytest test_flidgitator.py --pdb

(test fails)
>>> from my_cool_util import diff; diff(Flidgitator(44), expected_flidgets)

[0] ✓ [Flidget] EQUAL

· capacitance   98.6
· chromaticity  19.5
· id            FLIDGET_ONE


[1] ✘ [Flidget] NOT EQUAL

· capacitance   98.6
· id            FLIDGET_TWO

+ chromaticity  23.8
- chromaticity  46.1


2 total / 1 equal / 1 not equal

我可以使用键盘宏(TextExpander等)为了自动化import位,但我仍然必须手动键入两个对象/列表,以便在每次失败时进行比较。有没有什么方法可以避免在失败的pytest断言的两端输入和钩子,以便在失败的测试中自动调用我的实用程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 22:38:36

有一个钩子pytest_assertrepr_compare,您可以在其中定制未完整归档的assert的输出

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61231254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档