pytest assume无法导入:解决ImportError: cannot import name ‘assume‘ from ‘pytest‘问题

代码如下:

from pytest import assume

报错:
ImportError: cannot import name ‘assume’ from ‘pytest’ (C:\Users\zeng\AppData\Local\Programs\Python\Python39\lib\site-packages\pytest_init_.py)

首先复制了这段报错信息百度,百度有两种说法,一种说法是因为我的.py文件和python内置模块的文件名相同,所以导致ide无法区分,而导入失败。但检查后发现,我的.py文件名没有问题。
另一种说法是我安装的的pytest版本和使用的pytest版本不符。通过pip list,查询到模块版本:
在这里插入图片描述
但打开pytest的__init__.py没有发现版本信息,打开pytest_assume的__init__.py,发现版本确实不相符,于是将版本更改为2.4.2,;但测试之后发现,问题并没有解决。

于是根据报错信息,打开C:\Users\zeng\AppData\Local\Programs\Python\Python39\lib\site-packages\pytest_init_.py文件,发现这个文件里都是一些import操作,搜索后发现,确实没有导入assume。

随后,我在C:\Users\zeng\AppData\Local\Programs\Python\Python39\lib\site-packages目录下发现存在pytest_assume模块
在这里插入图片描述
查找后发现,assume模块存在于pytest_assume中的plugin.py中
在这里插入图片描述
于是回到C:\Users\zeng\AppData\Local\Programs\Python\Python39\lib\site-packages\pytest_init_.py这个文件,在里面添加一行代码:

from pytest_assume.plugin import assume

在这里插入图片描述
保存后,再次运行原来使用了assume的python文件,运行成功。但是会报一个警告,不影响使用:
在这里插入图片描述

值得一提的是,我最初pip install pytest-assume之后,直接from pytest import assume是可以成功的;但过了几天后,再import assume就不行了。这也应该是报警告的关键所在,有点困惑,希望有大佬能指点一下到底是什么原因。

补充:
今天在PyCharm上使用, 一直标红,但是不影响使用
在这里插入图片描述
换成

from pytest_assume.plugin import assume

后正常

猜你喜欢

转载自blog.csdn.net/tianshuiyimo/article/details/116519264