【发布时间】:2014-06-18 09:50:39
【问题描述】:
在我使用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 之外的单独文件(还报告测试失败/通过)?
【问题讨论】:
-
能把问题测试的代码放上去吗?和输出?什么是
too much? -
@Oz123:我还没有真正计算出两个字符串中的字符数。我看起来有数百个 80 字符行。您可以像这样创建类似的测试: def test_my_long_strings(self): self.assertEqual('a'*5000, 'b'*5000) 该测试并不是真正的单元测试,而是基于unittest 模块(不是我写的,我是尝试调试它的用户)。
-
@user2442366 我再次检查,
maxDiff只影响 diff 输出(+/-部分)。作为带有默认断言消息的异常的一部分显示的字符串不受它的影响。因此,您必须结合使用maxDiff和@Jimr 在他的回答中提出的建议。 -
@user2442366 为了做到这一点,您可能最好创建自己的
TestCase子类,类似于SilencedTestCase,设置类变量maxDiff,并扩展assertEqualon它始终提供截断字符串的自定义断言消息。
标签: python assert error-logging nosetests python-unittest