我有几个模块(DZP::Catalyst和DZP::OurPkgVersion),他们的目的都是将文件写入磁盘。我不知道如何测试它们,有没有测试写入磁盘的文件的好策略?任何地方我可以去阅读它?如何测试输出/修改文件的模块/脚本?
回答
那么,在这个特殊情况下(Dist::Zilla插件),你会想要使用Dist::Zilla::Tester。它负责创建一个临时目录,用文件填充它,然后进行清理。例如,请参阅the tests from my DZP::CJM或tests from Dist::Zilla itself,尤其是plugins directory。
更新: Dist :: Zilla 4.200002推出了Test::DZil模块,它增加了一些对测试插件有用的实用函数。您可能想要直接使用它而不是直接使用Dist :: Zilla :: Tester。
这有点取决于模块,但我的一般策略是:
确保文件内容的逻辑是100%独立的 - 只要在不同的方法是 - 从文件力学(如选择目录/打开文件/关闭文件/错误处理)。
确保文件结构是100%灵活的,例如,您可以从外部驱动程序中选择目录/文件名。
的文件力学写入测试中,通过简单地打开指定文件中指定的目录,将其关闭,确保没有错误发生,该预期的文件存在,并且有大小为零
创建测试数据数组,用由3份
输入数据为文件内容的逻辑数组的每个元素,可能加上测试配置指示如有必要对这些数据调用从文件内容的逻辑方法。
预计文件名设置
预期的文件内容,焦油揉成团预期文件(要生成精确预期的内容和正确的预期的名称准确的文件)的形式。
预计的成果压缩包应该是在一个单独的子目录(说得清你的测试脚本住目录下的“expected_results”。
您需要在情况下,你的文件生成逻辑生成> 1文件压缩包。
然后,运行一个循环在测试阵列中的每个测试之前创建:
创建一个新的“实际结果”临时目录(或清理之前测试的目录)
将您模块中的目录设置为临时目录;将测试信息中的模块文件名设置为预期的文件名。
使用测试的逻辑方向(如果适用)和测试的输入数据运行从模块文件开罐器方法(先前测试)
执行内容生成逻辑。
运行文件接近方法(以前测试过)
创建一个“临时的预期结果” temp目录(或清理从最后一次测试的一个)
复制“期望的结果”压缩包从“expected_results”测试子目录到上一个项目符号点创建的“临时预期结果”临时目录
解压缩“临时预期结果”临时目录中的tarball并从那里删除tarball。
directory -diff“临时预期结果”临时目录与“实际结果”临时目录(例如,确保两个文件都有100%相同的文件列表,并且每个文件的内容都是100%相同的,通过
system()
通话使用diff
。
由于上述逻辑是非常通用的,我一般抽象大部分走成一个“测试:: FileGenerator”模块可以重新使用的所有单位和整合测试文件生成能力测试
- 1. 如何修复单元测试文件中缺失的模块?
- 2. 修改测试文件模板
- 3. 带输出的iverilog测试台模块
- 4. 的UNIX shell脚本:如何修改输出相应的文件名
- 5. nodejs如何测试大输出文本
- 6. 如何用sed修改shell脚本输出的字体颜色?
- 7. 如何使用php修改脚本的输出?
- 8. 如何输出脚本到文件?
- 9. 如何从脚本输出.cprofile文件
- 10. 显示器输出NCrunch测试修改控制台输出流
- 11. 修改Magento2模块的css文件
- 12. Drupal留言簿模块文本修改
- 13. (基本的JAVA)如何测试输出
- 14. 如何测试Python脚本的输出是什么
- 15. 使用输入文件和输出解决方案进行测试的脚本
- 16. 如何修改输出
- 17. 单元测试文件修改
- 18. 如何将输出保存为python脚本的文本文件?
- 19. 我如何修改ASP.NET Repeater的输出来替换文本
- 20. 鼻子:捕获脚本输出以及测试输出
- 21. Netbeans模块开发 - 如何修改打开的文件
- 22. CSS - 如何修剪文本输出?
- 23. 与Python脚本修改XML文件
- 24. 修改文件使用脚本
- 25. 使用Python脚本修改文件名
- 26. 如何修改新文件的模板?
- 27. 如何测试群发邮件脚本
- 28. 修改python脚本运行多个输入文件
- 29. 如何测试猪脚本
- 30. 我想修改这个python脚本来输出解析文件的修改日期及其标题
好吧,忘了提及这一点,但是如果关于使文件内容生成逻辑的部分只与文件句柄对象或类属性一起工作,这种方法将大大受益。这种自我明显但可能是明确阐明的有价值的技术。 – DVK 2010-08-03 11:00:12