如何将两个文件作为unittest的一部分进行比较,同时在不匹配的情况下获得有用的输出?

2024-05-23 14:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

作为使用unittest框架的一些Python测试的一部分,我需要比较两个相对较短的文本文件,其中一个是测试输出文件,另一个是引用文件。

直接的方法是:

import filecmp
...
self.assertTrue(filecmp.cmp(tst_path, ref_path, shallow=False))

如果测试通过,它可以正常工作,但即使失败,输出也没有太大帮助:

AssertionError: False is not true

有没有更好的方法来比较作为unittest框架一部分的两个文件,以便在不匹配的情况下生成一些有用的输出?


Tags: 文件path方法importself框架reffalse
3条回答

比较这两个文件的内容不是更好吗。例如,如果它们是文本文件,比较两个文件的文本,这将输出一些更有意义的错误消息。

您只需为错误条件添加自己的消息。doc

self.assertTrue(filecmp(...), 'You error message')

要获得哪一行有差异的报告以及该行的打印输出,请对内容使用assertListEqual,例如

self.assertListEqual(
    list(io.open(tst_path)),
    list(io.open(ref_path)))

相关问题 更多 >