如何确保我的大型Python项目的良好测试覆盖率

时间:2010-06-25 09:44:02

标签: python unit-testing code-coverage python-coverage

我有一个非常大的python项目,它有一个非常大的测试套件。最近我们决定量化测试覆盖的质量。

我正在寻找一种自动生成测试覆盖率报告的工具。理想情况下,我希望有一个有吸引力的,易于阅读的报告,但如果能让它快速起作用,我会满足于不太有吸引力的报道。

我尝试过Nose,这还不够好:它与distribute / setuptools的命名空间包功能不兼容。不幸的是,鼻子覆盖对我们来说永远不会有用,因为我们充分利用了这个功能这真是一种耻辱,因为Nose似乎在Hudson中工作得非常好(主要是)

作为替代方案,我听说有一种方法可以在Eclipse中进行Python覆盖率分析,但我并没有完全锁定完美的技术。

欢迎任何建议!

仅供参考我们在Windows XP 32bit上使用Python 2.4.4

2 个答案:

答案 0 :(得分:4)

您是否尝试过使用coverage.py?它是“鼻子覆盖”的基础,但如果你需要,可以在鼻子外面完美地运行。

如果您使用(假设)python run_my_tests.py运行测试,则可以使用coverage run run_my_tests.py衡量覆盖率,然后使用coverage html获取HTML报告。

根据你的描述,我不确定你的鼻子有什么问题,特别是它是鼻子问题还是coverage.py问题。提供更多细节,我相信我们可以完成它们。

答案 1 :(得分:1)

Ned已经提到了他优秀的coverage.py模块。

如果您遇到的问题与鼻子有关,您可能需要考虑使用其他测试运行器。我使用了py.test以及pytest_coverage插件,可以生成覆盖率统计信息。它还有一个pytest_nose插件,可以帮助您迁移。

但是,我并不完全明白你所遇到的问题是什么。您能否详细说明您提到的“distribute / setuptools'命名空间包功能”?我很想知道问题所在。