Python 3.x Python3如何让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

我在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 (__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个字符]”字符串都消失了,我可以再次读取测试失败的输出

(受影响的代码仅供参考)