【问题标题】:How can I ensure good test-coverage of my big Python proejct如何确保我的大型 Python 项目有良好的测试覆盖率
【发布时间】:2011-03-08 05:12:44
【问题描述】:

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

我正在寻找一种工具来自动生成测试覆盖率报告。理想情况下,我希望获得有吸引力且易于阅读的报告,但如果我能使其快速运行,我会接受吸引力较低的报告。

我试过Nose,但不够好:它与distribute / setuptools 的命名空间包功能不兼容。不幸的是,鼻子覆盖永远不会对我们有用,因为我们充分利用了这个功能。这真是太可惜了,因为鼻子在哈德逊(大部分情况下)似乎工作得很好

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

欢迎提出任何建议!

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

【问题讨论】:

  • 我尝试重现此问题,但不能。 Salim,如果你需要帮助,请给我留言。

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


【解决方案1】:

Ned 已经提到了他出色的 coverage.py 模块。

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

但是,我不明白您所面临的问题究竟是什么。您能否详细说明您提到的“分发/设置工具的命名空间包功能”?我很想知道问题是什么。

【讨论】:

  • 我们使用 setuptools 的命名空间包功能,它允许多个鸡蛋在一个单一的命名空间中提供东西,例如,如果 myproduct_foo_1.0.egg 可能提供命名空间 myproduct 和 myproduct.foo 以及 myproduct_bar_1。 0.egg 将提供命名空间 myproduct.bar。当我尝试对 myproduct 进行覆盖分析时,覆盖工具需要检测两个鸡蛋中的哪一个实际上包含每个相关模块的来源。目前鼻子/cover.py似乎做错了。
  • Salim,我很想修复 coverage.py 来解决这个问题。你有样品我可以自己试试吗?
  • 顺便说一句:我为这个问题添加了一个coverage.py票:bitbucket.org/ned/coveragepy/issue/75/…
【解决方案2】:

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

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

根据您的描述,我不确定您的鼻子有什么问题,尤其是鼻子问题还是 coverage.py 问题。提供更多细节,我相信我们可以解决这些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2019-11-30
    • 2013-07-05
    • 2011-03-20
    • 1970-01-01
    • 2020-02-21
    • 2014-10-25
    相关资源
    最近更新 更多