我有一个运行flask
的python3应用程序,并且我在测试用例中使用Tavern
和pytest
。测试用例按预期执行,并正确显示结果。但是我总是得到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
模块下。并且覆盖率结果仅显示每个模块中文件100%
的{{1}}。它没有显示真实源代码的任何覆盖率数据。
此项目中测试的依赖版本为:
__init__.py
我的项目中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
答案 0 :(得分:0)
默认情况下(除非您正在使用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
,然后像现在一样在服务器上运行测试(减去覆盖范围)。然后,覆盖率输出将包含有关在杀死服务器时运行小酒馆测试时已执行了哪些行的信息。