【问题标题】:nose reports cumulative coverage鼻子报告累积覆盖率
【发布时间】:2015-06-23 12:48:47
【问题描述】:

想象一下您拥有BASE_CLASS 的情况。有几个类继承自该类:CHILD_ACHILD_BCHILD_C

现在让我们编写单元测试,但仅限于CHILD_ACHILD_BCHILD_C。我怀疑BASE_CLASS 的覆盖率是 0%。不幸的是,nose 采用累积覆盖率,这不是我想要的。我在执行测试时尝试使用---cover-erase 标志,但这没有帮助。

我的问题是:如何强制nose 不使用累积覆盖率?我需要这个来了解BASE_CLASS 的单元测试有多好。

【问题讨论】:

  • 但测试正在运行该代码。 Python 不仅神奇地知道BASE_CLASS 是什么代码,因为某些类继承自它,它必须去看看。因此,这些行在测试期间正在运行。
  • 这就是我的预期。所以不,这是不可能的
  • 只要你写代码,一切皆有可能。您只需要确定结果是否值得付出努力。
  • 是的,我们一直在这样做,如果我们找到 some_file_unit_test.py 文件,那么我们知道上面的一个文件夹是 some_file.py。这样我们就知道这个单元测试是针对这个特定文件的。我们存储该测试的覆盖率并继续前进。我们想搬到鼻子,但因为你之前提到的......

标签: python unit-testing testing nose


【解决方案1】:

您的测试正在运行BASE_CLASS 中的代码。创建子类实例时,Python 不仅仅知道基类中的内容。它必须去基类并查看那里的代码。

如果您想查看对特定基类的覆盖率有多高,您可以运行特定于该类的测试用例/方法。来自docs

# Run all the tests in the animals.tests module
$ ./manage.py test animals.tests

# Run all the tests found within the 'animals' package
$ ./manage.py test animals

# Run just one test case
$ ./manage.py test animals.tests.AnimalTestCase

# Run just one test method
$ ./manage.py test animals.tests.AnimalTestCase.test_animals_can_speak

【讨论】:

    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多