2015-04-30 85 views
1

我已经在Python中编写了一个软件,它做了很多解析和大量写入文件到磁盘。我开始写单元测试,但不知道如何单元测试一个函数,它只是将一些数据写入磁盘,并且什么都不返回。如何为编写者/解析器编写测试? (Python)

我熟悉unittest和ddt。任何意见,甚至连接到一个资源,我可以了解更多,将不胜感激。

+0

你没有......有一个函数返回一个字符串......然后写入磁盘....这样你可以断言你得到了预期的字符串......你想测试低级函数(尽可能少的每个函数),然后到你真正写的时候,所有你必须指望的是python的'open'和'write'工作......这是一个安全的赌注和超出你需要测试的范围 –

+1

啊,那么我应该在测试文件上运行解析器,然后检查解析的数据是否与某些字符串匹配? – ben

+0

将一些确定性内容写入磁盘并检查内容是否足够? – gustafbstrom

回答

3

可以说,最好的解决方案是将你的功能分成两部分。一块做解析,另一块做写作。然后,你可以单独测试每件。

对于第一部分,给它一个文件并验证解析函数返回适当的字符串,和/或引发适当的异常。

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

如果重构代码不是你可以做的事,你仍然可以测试这个函数。为它提供要解析的数据,然后打开它写入的文件,并将结果与​​期望的结果进行比较。