首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pytest-cov对于酒馆测试总是显示0覆盖率

pytest-cov对于酒馆测试总是显示0覆盖率
EN

Stack Overflow用户
提问于 2019-09-02 09:22:05
回答 1查看 1.9K关注 0票数 1

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

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

代码语言:javascript
复制
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__.py100%。它没有显示真实源代码的任何覆盖率数据。

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

代码语言:javascript
复制
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的内容是:

代码语言:javascript
复制
[report]
exclude_lines =
    if __name__ == .__main__.:
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-03 00:58:44

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

由于覆盖率识别哪些行已经执行的方式,它只能在运行时所在的同一进程中测试代码。你可以在这里阅读更多关于它是如何工作的:https://coverage.readthedocs.io/en/v4.5.x/howitworks.html

为了实现你想要的东西--我假设是获得你的web服务器代码的覆盖率,用coverage.py运行你的flask服务器,比如coverage run --source=app flask run,然后在你现在的服务器上运行你的测试(减去打开覆盖率)。然后,coverage输出将包含有关在关闭服务器时运行酒馆测试时执行了哪些行的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57750558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档