Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以钩住pytest断言失败吗?_Python_Python 3.x_Pytest - Fatal编程技术网

Python 我可以钩住pytest断言失败吗?

Python 我可以钩住pytest断言失败吗?,python,python-3.x,pytest,Python,Python 3.x,Pytest,我花了一天的大部分时间眯着眼于失败的pytest输出,看看为什么两个对象或两个对象集合不太匹配 def test_flidgets_are_equal(expected_flidgets): assert Flidgitator(44) == expected_flidget pytest的默认打印输出,即使使用了-vv选项,也是一团乱麻。任何东西都不能正确对齐,也不能与任何类型的复杂对象(更不用说对象列表)对齐。很难看到不匹配的位置,甚至很难看到两个集合是否具有相同的基数 好的,我写了

我花了一天的大部分时间眯着眼于失败的
pytest
输出,看看为什么两个对象或两个对象集合不太匹配

def test_flidgets_are_equal(expected_flidgets):
   assert Flidgitator(44) == expected_flidget
pytest
的默认打印输出,即使使用了
-vv
选项,也是一团乱麻。任何东西都不能正确对齐,也不能与任何类型的复杂对象(更不用说对象列表)对齐。很难看到不匹配的位置,甚至很难看到两个集合是否具有相同的基数

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

$ 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等)自动执行
导入
位,但我仍然必须手动键入每次失败时要比较的两个对象/列表。有什么方法可以避免在失败的
pytest
断言的两侧键入并钩住,以便在失败的测试中自动调用我的实用程序吗?

有一个钩子,您可以自定义unfullfield
断言的输出!这就是我要找的。上面的链接已经死了,但文档已经死了。