【问题标题】:How to write tests for writers / parsers? (Python)如何为编写器/解析器编写测试? (Python)
【发布时间】:2015-04-30 17:01:51
【问题描述】:

我用 Python 编写了一个软件,它进行了大量的解析和将文件写入磁盘。我开始编写单元测试,但不知道如何对仅将一些数据写入磁盘且不返回任何内容的函数进行单元测试。

我熟悉 unittest 和 ddt。任何建议,甚至是指向我可以了解更多信息的资源的链接都将不胜感激。

【问题讨论】:

  • 你没有......有一个返回字符串的函数......然后写入磁盘......这样你就可以断言你得到了预期的字符串......你想要要测试尽可能多地隔离的较低级别的函数(每个函数都尽可能少地执行),那么当你真正写到 dist 时,你所要做的就是 python openwrite 工作。 ..这是一个安全的选择,超出了您需要测试的范围
  • 啊,那我应该在测试文件上运行解析器,然后检查解析的数据是否匹配某些字符串?
  • 将一些确定性的内容写入磁盘然后检查内容是否足够?
  • @gustafbstrom 基于这个问题几乎可以肯定是的......但你真的不需要测试操作系统是否可以写入文件或者openwrite 在 python 中工作,你可以相信那个,而且它真的超出了你应该测试的范围......这表明它可能比重构为更小的更模块化的函数更容易
  • 非常感谢,但为什么不将您的评论写为答案,以便我将其标记为已回答?

标签: python unit-testing testing functional-testing


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2023-04-05
    • 1970-01-01
    • 2015-08-14
    • 2018-11-03
    • 2019-04-03
    相关资源
    最近更新 更多