通过Travis-CI对测试目录进行覆盖率运行

4
我无法在Python项目的测试目录中运行coverage.py。我有一个包含__init__.py文件和一些test_*.py文件的测试目录,其中我在每个测试文件的__main__块中定义要运行的测试。
测试目录位于与.travis.yml文件相同的文件夹中,其内容如下:

enter image description here

当我运行一个单独的文件(coverage run tests/test_errors.py)时,script块可以工作,但是每当我尝试运行目录中的所有文件时,它就无法工作。
我已经尝试了以下解决方案:

每当我对单个文件运行覆盖率时,codecov都会输出以下内容:

enter image description here

我正在寻找的是测试包含在tests目录中的多个Python文件的方法。如您所见,这是使用coverage run tests/test_investpy.py时的codecov输出,而不是整个'tests/'目录的输出。
欢迎任何帮助或信息!提前感谢您!
(注:有关项目结构的更多信息,请查看https://github.com/alvarob96/investpy,因为它是一个开源项目)
1个回答

9
经过更多的研究和测试,我发现pytest-cov文档有一个附录,可以为单个测试运行生成多个覆盖报告: https://pytest-cov.readthedocs.io/en/latest/reporting.html 要执行tests/中包含的每个测试并在codecov中获取代码覆盖结果,.travis.yml内的脚本行应为:pytest --cov-report term --cov=investpy tests/,通过pytest,您可以为指定的项目生成终端覆盖率报告tests/目录。
因此,当在同一项目上运行多个测试以合并代码覆盖结果时,.travis.yml应该是:

.travis.yml file fixed

所需的软件包以在Travis-CI上运行覆盖测试为:

  • pip install pytest==4.5.0
  • pip install codecov==2.0.15
  • pip install pytest-cov==2.7.1

由于我已经解决了问题,如果您有相同的问题,可以随时向我提问,我会尽力帮助您!如果您发现此答案有用,请对此答案进行评分!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接