【问题标题】:pytest-cov always show 0 coverage for Tavern testpytest-cov 总是显示 0 覆盖 Tavern 测试
【发布时间】:2020-01-05 02:44:14
【问题描述】:

我有一个使用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__.py100%。它没有显示真实源代码的任何覆盖率数据。

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

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__.:

【问题讨论】:

  • 你的项目文件夹中有coveragerc吗?
  • 是的,我已经发布了这个文件的内容

标签: python flask pytest tavern


【解决方案1】:

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

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

为了实现您所追求的目标——我假设这是为了覆盖您的 Web 服务器代码,请使用 coverage.py 运行您的烧瓶服务器,例如coverage run --source=app flask run,然后像现在一样对服务器运行测试(减去打开覆盖率)。然后,覆盖输出将包含有关在您终止服务器时运行酒馆测试时执行了哪些行的信息。

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 2022-06-11
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多