Python 3.x Python3如何让assertEqual打印所有上下文信息?
我在Python3中使用unittest.TestCase,需要在assertEqual发现问题时打印更多信息 我的测试函数包括以下语句:Python 3.x Python3如何让assertEqual打印所有上下文信息?,python-3.x,python-unittest,Python 3.x,Python Unittest,我在Python3中使用unittest.TestCase,需要在assertEqual发现问题时打印更多信息 我的测试函数包括以下语句: self.assertEqual(result, exp_result, "Test_svg_glyph_scale test #" + str(test_num)) 在发现错误时,应该打印result和exp\u result以及调用assertEqual中的字符串。但是,它正在截断结果和exp\u结果的输出: FAIL: test_scale (__m
self.assertEqual(result, exp_result, "Test_svg_glyph_scale test #" + str(test_num))
在发现错误时,应该打印result
和exp\u result
以及调用assertEqual
中的字符串。但是,它正在截断结果
和exp\u结果
的输出:
FAIL: test_scale (__main__.Test_svg_glyph)
----------------------------------------------------------------------
Traceback (most recent call last):
File "svg_glyph_test.py", line 322, in test_scale
self.assertEqual(result, exp_result, "Test_svg_glyph_scale test #" + str(test_num))
AssertionError: glyph[15 chars]5000,-0.5000)
l(0.0000,1.0000)
[75 chars] ]) != glyph[15 chars]5000,0.5000)
l(0.0000,1.0000)
[74 chars] ]) : Test_svg_glyph_scale test #1
我希望看到的是[15个字符]和[75个字符],因此我确切地知道返回和期望的内容(好的,我知道这一个),并且能够轻松地比较它们
maxDiff
似乎只适用于字符串比较。我试图比较两种结构
是否有一个设置可以更改以打印所有字符?我还想禁用这个非常奇怪的Python 3行为。看来唯一的解决办法是直接对unittest.util模块进行猴子补丁:
unittest.util._MAX_LENGTH = 160 # Default is 80, so this doubles it
在这之后,所有的“[25个字符]”字符串都消失了,我可以再次读取测试失败的输出
(供参考,受影响的代码)我还想禁用这个非常奇怪的Python 3行为。看来唯一的解决办法是直接对unittest.util模块进行猴子补丁:
unittest.util._MAX_LENGTH = 160 # Default is 80, so this doubles it
在这之后,所有的“[25个字符]”字符串都消失了,我可以再次读取测试失败的输出
(受影响的代码仅供参考)