我无法从Python项目的tests目录中运行coverage.py。我有一个包含.add-margin-50px{
margin-right: 50px;
}
文件和一些__init__.py
文件的测试目录,在其中定义要在每个测试文件的test_*.py
块中运行的测试。
tests目录与__main__
文件位于同一文件夹中,如下所示:
当我以.travis.yml
运行单个文件时,脚本块将起作用,但是每当我尝试运行目录中的所有文件时,它将不起作用。
我尝试了以下解决方案:
How can pytest-cov report coverage of python code that is executed as a result of pexpect.spawn? =>不适用于我,因为Travis-CI调试器说没有数据可以合并,而且该解决方案并不是我想要的,因为最有效的方法是不列出所有测试文件,仅列出我猜的目录。
Python coverage: running more than 1 test =>此解决方案有效,但覆盖范围仅在tests目录中进行,我想在codecov中测试整个项目的覆盖范围。为了澄清,codecov显示:
每当我为单个文件运行coverage时,codecov都会输出以下内容:
我要寻找的是什么,但是要测试tests目录中包含的多个Python文件。如您所见,这是coverage run tests/test_errors.py
而不是整个“ tests /”目录下的codecov输出。
欢迎任何帮助或信息!预先谢谢你!
(注意:有关项目结构的更多信息,您可以在https://github.com/alvarob96/investpy中检查该项目,因为它是一个开源项目)
答案 0 :(得分:0)
经过更多的研究和测试,我发现pytest-cov文档有一个附录,可为一次测试运行生成多个覆盖率报告:https://pytest-cov.readthedocs.io/en/latest/reporting.html
要执行tests/
中包含的每个测试并在codecov中获得代码覆盖率结果,.travis.yml
中的脚本行应为:pytest --cov-report term --cov=investpy tests/
,通过{{3} },您可以为指定tests/
目录的项目生成终端覆盖率报告。
因此,在同一项目上运行多个测试以合并代码覆盖率结果时,.travis.yml
应该是:
因此在Travis-CI上运行覆盖率测试所需的软件包为:
pip install pytest==4.5.0
pip install codecov==2.0.15
pip install pytest-cov==2.7.1
我已经解决了,如果您有相同的问题,可以随时问我任何相关问题,无论如何我都可以为您提供帮助!如果您认为此答案有用,请对这个答案进行评分!