我正在尝试实现一种完整而干净的测试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)