如何为编写器/解析器编写测试? (Python)

How to write tests for writers / parsers? (Python)

我在 Python 中编写了一个软件,可以进行大量解析并将大量文件写入磁盘。我开始编写单元测试,但不知道如何对只将一些数据写入磁盘的函数进行单元测试,returns 什么都没有。

我熟悉 unittest 和 ddt。任何建议,甚至 link 我都可以学到更多的资源,我们将不胜感激。

可以说,最好的解决方案是将您的功能分成两部分。一件做解析,第二件做写作。然后,您可以分别对每个部分进行单元测试。

对于第一部分,给它一个文件并验证解析函数 returns 正确的字符串,and/or 抛出正确的异常。

对于第二个,给它一个要写入的字符串,然后验证文件是否已写入并且内容是否与您的字符串匹配。跳过写入数据的测试很诱人,因为假设 python 打开和写入函数工作是合理的。但是,单元测试也证明你传入的数据就是被写入的数据(即:你没有导致将固定字符串写入文件的错误)。

如果您不能重构代码,您仍然可以测试该功能。向它提供要解析的数据,然后打开它写入的文件并将结果与​​您期望的结果进行比较。