首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PyDevD正在阻止pytest正确生成覆盖率

PyDevD正在阻止pytest正确生成覆盖率
EN

Stack Overflow用户
提问于 2021-02-26 16:08:55
回答 1查看 52关注 0票数 1

我正在处理一个生成覆盖率的问题,它不能像预期的那样工作。最后我发现它与pydevd(PyDev调试器)包。

要重现我的问题,您可以使用以下repo:cov-project

只有两个文件。1英寸my_package使用

代码语言:javascript
代码运行次数:0
运行
复制
import pydevd  # Just for the purpose to show the problem

def sum(num1, num2):
    return num1 + num2

def mult(num1, num2):
    return num1 * num2

和测试文件test_math.py在测试中:

代码语言:javascript
代码运行次数:0
运行
复制
from my_package.math import sum, mult

def test_sum():
    assert sum(1, 2) == 3

def test_mult():
    assert mult(2, 3) == 6

当我删除import pydevd从第一个文件开始运行python -m pytest --cov=my_package tests我得到以下输出:

代码语言:javascript
代码运行次数:0
运行
复制
Name                     Stmts   Miss  Cover
--------------------------------------------
my_package/__init__.py       0      0   100%
my_package/math.py           4      0   100%
--------------------------------------------
TOTAL                        4      0   100%

是的,100%的覆盖率与预期不谋而合。但是当我运行相同的程序并继续导入时pydevd我得到了:

代码语言:javascript
代码运行次数:0
运行
复制
Name                     Stmts   Miss  Cover
--------------------------------------------
my_package/__init__.py       0      0   100%
my_package/math.py           5      4    20%
--------------------------------------------
TOTAL                        5      4    20%

测试是完全相同的,唯一的变化是这个额外的导入。当然,在这个设置中pydevd是未使用的,我可以简单地删除它。但是我在我的专有代码中使用了它,所以我想展示如何以最简单的方式重现我的错误,因为在使用pydevd..。我可以将它更改为本地导入,因为我在测试中不使用它,然后它就可以工作了,但我正在尝试理解这里发生了什么以及为什么要这样做pydevd阻止覆盖范围成功生成报告。

已测试

  • 使用python 3.8和3.9
  • 使用pydevd 2.2.0和2.3.0
  • pytest 6.2.2
  • pytest-cov 2.11.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-27 20:09:15

这真的是一个bugpydevd..。

我已经把它修好了

https://github.com/fabioz/PyDev.Debugger/commit/be32cd821f2574566385deeec23081365bf16722

同时,您可以将相同的修复程序应用于您的本地版本。

要查找用于修复的文件,您可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
import pydevd
from _pydevd_bundle import pydevd_constants
print(pydevd_constants.__file__)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66382210

复制
相关文章

相似问题

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