解决了在python中运行unittest的过多方法所产生的混乱

时间:2013-04-17 12:34:28

标签: nose pytest unittest2 tox

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

  • 在没有设置的情况下在干净的机器上执行测试(virtualenv)
  • 多个平台
  • 收集结果
  • 多个python解释器
  • 收集结果
  • 代码覆盖率(将多次执行的结果合并到一个报告中)
  • 能够生成xml代码覆盖率报告,以便构建系统可以跟踪这种变化随时间的变化情况。
  • 能够根据平台启用禁用测试
  • 在测试之前运行几个命令,如pep8或autopep8
  • 并行运行测试。

我使用了多种方法:nose + pytesttox + pytest但最近发现pytest应该能够完成大部分工作。

主要问题是我无法找到关于何时使用一种方法或另一种方法更好的明确比较。

有人可以解释这些并给出一些用例或这些配置的限制吗? ......只是为了清楚说明何时采用某种方法。

最后我想要有这些选项:

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

1 个答案:

答案 0 :(得分:1)

py.test完美地满足您的所有需求 与其他测试跑步者如鼻子相比,它是优秀的:

  • 具有依赖注入的灯具 - 无需复杂的oop进行测试设置
  • 简单但功能强大的插件系统,有很多有用的插件 - 像pytest-xdist这样的插件允许你根据需要在所有平台上进行测试,包括windows,pytest-cov做覆盖,pytest-cache有助于只运行最后失败的测试等等
  • 参数化允许您使用声明性参数
  • 使用一次写入运行多次方法进行测试
  • 使用简单的断言语句与复杂的类似java的语法.assertEquals(http://pytest.org/latest/assert.html
  • 越来越多