python - pytest-cov 在 Tavern 测试中始终显示 0 覆盖率

标签 python flask pytest tavern

我有一个使用 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 ),您的应用程序代码在与运行测试的进程不同的操作系统进程中运行。

由于覆盖率识别已执行的行的方式,它只能测试正在运行的同一进程中的代码。您可以在此处阅读有关其工作原理的更多信息:https://coverage.readthedocs.io/en/v4.5.x/howitworks.html

为了实现你所追求的目标 - 我认为是获得你的网络服务器代码的覆盖范围,请使用 coverage.py 运行你的 Flask 服务器。 ,例如coverage run --source=appflask run,然后像现在一样对服务器运行测试(减去打开覆盖率)。然后,覆盖输出将包含有关当您终止服务器时运行酒馆测试时执行了哪些行的信息。

关于python - pytest-cov 在 Tavern 测试中始终显示 0 覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57750558/

相关文章:

python - 如何测试使用 exec_() 调用的自定义对话框窗口?

python - 如何为 crontab 设置 virtualenv?

python - 如何在 Heroku 免费计划上使用 Celery 任务部署 Django 应用程序

Python平滑曲线

python - 无法使用python将存储在变量中的数据插入到MYSQL数据库表中

python - Docker sqlite3.OperationalError : unable to open database file

运行测试时出现 Python pytest 警告

python - 您可以在 SQL SERVER 2016 中将 Python 与 MS 机器学习结合使用吗

python - 使用 python Flask 应用程序部署到 heroku 时 Procfile/wsgi 出现问题 ~ 找不到属性

python - 将 Flask 应用程序导入 Elastic Beanstalk 错误 : can't open file 'mod_wsgi' : [Errno 2] No such file or directory