Python PyDevD正在阻止pytest正确生成覆盖率
我正在处理的是一个发电覆盖率问题,它没有像预期的那样发挥作用。最后我发现它以某种方式连接到(PyDev debugger)包 要复制我的发行,您可以使用以下回购协议: 只有两个文件。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
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