Python单元测试assertEqual失败时打印过多信息
我在用 nosetests
进行一系列测试时,发现有一个 assertEqual(a,b)
失败了。这个时候,a
和 b
(都是很长的字符串)会直接打印出来,占满整个屏幕,导致其他信息都看不清楚。你可以通过在你的测试用例中添加以下代码来模拟这种情况:
def test_my_long_strings(self):
self.assertEqual('a'*5000, 'b'*5000)
我尝试过设置 --verbosity=0
和 --debug-log=File
,但是这些都没有效果,两个字符串还是会在屏幕上显示出来。
有没有办法让 assertEqual
的输出安静点,或者把它重定向到一个不同的文件,而不是 stderr(因为测试失败或通过的信息也会在这里报告)?
1 个回答
9
assertEqual的第三个参数是一个用于失败时的提示信息。
class TestMyTest(unittest.TestCase):
def test_example(self):
a = 'a'
b = 'b'
self.assertEqual(a, b, 'a did not equal b')
它会打印出出错位置的调用堆栈信息,以及
AssertionError: a did not equal b
参考资料: https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertEqual