……还有一匹小马!不,认真的。我正在寻找一种组织“正常工作”的测试的方法。大多数事情确实有效,但并非所有部分都可以组合在一起。所以这就是我想要的:
- 自动发现测试。这包括文档测试。请注意,doctest 的总和不得作为单个测试出现。(即不是 py.test --doctest-modules 所做的)
- 能够并行运行测试。(类似于 xdist 中的 py.test -n)
- 生成覆盖率报告。
- 让
python setup.py test
工作正常。
我目前的方法涉及一个tests
目录和load_tests 协议。包含的所有文件都命名为test_*.py
. python -m unittest discover
如果我创建一个test_doctests.py
包含以下内容的文件,这就会起作用。
import doctest
import mymodule1, mymodule2
def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite(mymodule1))
tests.addTests(doctest.DocTestSuite(mymodule2))
return tests
这种方法还有一个好处是可以使用 setuptools 和 supply setup(test_suite="unittest2.collector")
。
然而,这种方法存在一些问题。
- coverage.py 期望运行一个脚本。所以我不能在这里使用 unittest2 发现。
- py.test 不运行 load_tests 函数,因此它找不到 doctests 并且该
--doctest-modules
选项是废话。 - nosetests 运行
load_tests
函数,但不提供任何参数。这看起来在鼻子的一侧完全坏了。
我怎样才能让事情比这更好地工作或解决上面的一些问题?