繁体   English   中英

pytest-cov始终显示0的Tavern测试覆盖率

[英]pytest-cov always show 0 coverage for Tavern test

我有一个与flask运行的python3应用程序,我正在使用Tavernpytest进行测试。 测试用例按预期执行,并正确显示结果。 但是我总是得到0%的代码覆盖率。

这是用于运行测试的命令行:

python3 -m pytest --cov=api --cov-report html:reports/Coverage --cov-report term --junitxml=reports/UnitTest.xm
l --html=reports/TestSummary.html --self-contained-html

所有源代码都在api模块下。 每个模块中的__init__.py文件的覆盖率结果仅显示100% 它没有显示真实源代码的任何覆盖率数据。

此项目中测试的依赖项版本为:

flask==1.1.1
flask_testing==0.7.1
coverage>=4.0.3
nose>=1.3.7
pluggy>=0.3.1
py>=1.4.31
randomize>=0.13
pytest==4.6.4
pytest-cov>=2.6.0
tavern==0.26.4
pytest-html>=1.20.0
pytest-freezegun>=0.3.0
pytest-mock>=1.10.3

我的项目中.coveragerc的内容是:

[report]
exclude_lines =
    if __name__ == .__main__.:

默认情况下(除非您使用的是实验性插件,例如https://github.com/taverntesting/tavern-flask ),否则应用程序代码将在与测试所运行的进程不同的OS进程中运行。

由于coverage可以识别执行了哪些行的方式,因此只能在与运行时相同的过程中测试代码。您可以在此处详细了解其工作方式: https//coverage.readthedocs.io/en /v4.5.x/howitworks.html

为了实现您的目标-我假设是获得Web服务器代码的覆盖范围,请使用coverage.py运行flask服务器,例如coverage run --source=app flask run ,然后对服务器运行测试,如下所示:您现在就(减去覆盖范围)。 然后,coverage输出将包含有关在杀死服务器时运行tavern测试时执行了哪些行的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM