8

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

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

我用了几种方法:nose + pytesttox + pytest但最近发现pytest应该可以做大部分的东西。

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

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

最后,我确实想要这些选项:

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

1 回答 1

1

py.test 完美地满足了您的所有需求,与其他测试运行程序(如鼻子)相比,它的优点:

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