Python3如何获得assertEqual来打印所有上下文信息?

时间:2015-10-15 04:51:36

标签: python-3.x python-unittest

我在Python 3中使用unittest.TestCase,当assertEqual发现问题时需要打印更多信息。

我的测试功能包括声明:

else {//missing
     pst.setString(6,"Report");
     pst.setString(3,"success"); //without brackets, this line does not falls under else block
}//missing

发现错误后,应该打印self.assertEqual(result, exp_result, "Test_svg_glyph_scale test #" + str(test_num)) result以及调用exp_result时的字符串。但是,它会截断assertEqual__repr__的{​​{1}}输出:

result

我希望看到那些[15个字符]和[75个字符],所以我确切知道返回和预期的内容(好吧,我知道这个)并且能够轻松地比较它们。

exp_result似乎仅适用于字符串比较。我想比较两种结构。

我可以更改设置以打印所有字符吗?

1 个答案:

答案 0 :(得分:0)

我还想禁用这种非常奇怪的Python 3行为。似乎唯一的方法是修复它是直接修补unittest.util模块:

unittest.util._MAX_LENGTH = 160  # Default is 80, so this doubles it

在此之后所有" [25个字符]"字符串不见了,我可以再次读取测试失败的输出。

(供参考,受影响的代码util.py is on GitHub