解决了由于在python中运行unittest的方法太多而产生的混乱



我正在尝试实现一种完整而干净的测试python包的方法,一种适合以下要求的方法:

  • 在干净的机器上执行测试,而不设置它们(virtualenv)
  • 多个平台收集结果
  • 收集多个python解释器的结果
  • code coverage(将多个执行的结果合并到一个报告中)
  • 能够生成xml代码覆盖率报告,以便构建系统可以跟踪该变化如何随时间变化。
  • 能够基于平台启用禁用测试
  • 在测试前运行几个命令,如pep8或autopep8
  • 并行运行测试。

我使用了几种方法:nose + pytest, tox + pytest,但最近发现pytest应该能够做大部分的事情。

主要的问题是,我无法找到一个明确的比较,关于什么时候使用一种方法更好。

有人能解释一下这些并给出一些用例或这些配置的限制吗?... 当你选择一种方法或另一种方法时,要清楚。

最后,我确实希望有这些选项:

  • quicktest -在本地运行测试,每次提交前必须运行
  • fulltest -在发布新版本之前,必须在所有可用平台上运行完整测试

测试完全涵盖了您的所有需求与nose等其他测试运行器相比,它的优点:

    带有依赖注入的
  • fixture -消除了测试设置的复杂oop的需要
  • 简单但功能强大的插件系统,有很多有用的插件——像pytest-xdist这样的插件允许你在你需要的所有平台上测试,包括windows, pytest-cov做覆盖,pytest-cache帮助只运行最后失败的测试,等等。
  • 参数化允许使用声明性参数对测试使用一次写一次运行多次的方法
  • 使用简单的断言语句vs复杂的类似java的语法。assertequals (http://pytest.org/latest/assert.html)

相关内容

  • 没有找到相关文章

最新更新