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

Python PyDevD正在阻止pytest正确生成覆盖率,python,pytest,pydev,pytest-cov,Python,Pytest,Pydev,Pytest Cov,我正在处理的是一个发电覆盖率问题,它没有像预期的那样发挥作用。最后我发现它以某种方式连接到(PyDev debugger)包 要复制我的发行,您可以使用以下回购协议: 只有两个文件。my_软件包中的一个 import pydevd#只是为了显示问题 def总和(num1,num2): 返回num1+num2 def mult(num1,num2): 返回num1*num2 以及测试中的测试文件test_math.py: 来自my_package.math导入和,mult def test_su

我正在处理的是一个发电覆盖率问题,它没有像预期的那样发挥作用。最后我发现它以某种方式连接到(PyDev debugger)包

要复制我的发行,您可以使用以下回购协议:

只有两个文件。
my_软件包中的一个

import pydevd#只是为了显示问题
def总和(num1,num2):
返回num1+num2
def mult(num1,num2):
返回num1*num2
以及测试中的测试文件
test_math.py

来自my_package.math导入和,mult
def test_sum():
断言和(1,2)=3
def test_mult():
断言mult(2,3)=6
当我从第一个文件中删除
import pydevd
并运行
python-m pytest--cov=my_package tests
时,我得到以下输出:

Name                     Stmts   Miss  Cover
--------------------------------------------
my_package/__init__.py       0      0   100%
my_package/math.py           4      0   100%
--------------------------------------------
TOTAL                        4      0   100%
是的,按预期100%覆盖。但当我运行相同的程序并继续导入
pydevd
时,我得到:

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

    • 这确实是pydevd中的一个bug

      我已经修好了

      您可以同时对本地版本应用相同的修复程序

      要查找修复程序的文件,可以执行以下操作:

      import pydevd
      from _pydevd_bundle import pydevd_constants
      print(pydevd_constants.__file__)
      

      谢谢你的快速修复!这将是下一版本的一部分,对吗?如果是的话,你对它何时发布有什么期望吗?由于上一次事件发生在几天前,我想不会是在这个月。事实上,我计划尽快发布,因为我想再次更改PyDev上的评论块,所以应该很快(大概1-2周)。嗨,你有关于发布的任何更新吗?该漏洞于2月27日修复,但最新的PyPI版本2.3.0于2月21日发布。谢谢。它已经发布了,请使用版本2.4.1,因为2.4.0中有一些bug