PyCharm 中 pytest 运行 python 测试文件报错:D:\Python_file\.venv\Scripts\python.exe: No module named pytest

现象

在 PyCharm 中打开需要用 pytest 工具进行测试的 python 测试文件路径下,执行 "pytest" 或 "python -m pytest" 都提示 "No module named pytest",无法正常使用 pytest 测试。

尝试解决过程

按照《Python编程:从入门到实践》书中指示,"Win + R" 键进入 cmd 命令行终端。

  1. 执行 "python -m pip install --user pytest",安装的 pytest 在 C:\Users\admin\ 下某一目录。

(怀疑是与 python 测试文件未在同一盘符下,于是执行第 2 步)

  1. "python -m pip uninstall pytest",卸载原来安装在 C 盘下的 pytest。

"python -m pip install --target D:\Pytest\ pytest",安装 pytest 到 D 盘下新建的 Pytest 目录下。

(再次在测试文件路径下运行pytest,依旧报同样的错误)

直接删除 D:\Pytest 整个文件夹,以卸载无用的 pytest 安装。

  1. "python -m pip install --target D:\Python_file\ pytest",直接安装 pytest 到测试代码同目录下。

此时输入 "pytest" 还是不行,输入 "python -m pytest" 能执行。

但发现 pytest 除了测试代码中写的 "test_xxx.py" 文件,还会执行很多其他测试文件。

collected 53 items,实际上只想测试 1 item(可与最后 "pytest 工具正常测试效果" 图对比)。

测试代码目录下也多出很多其他文件。

直接到测试代码目录下,删掉除之前 .venv 目录和自己写的 .py 文件外多出的文件和文件夹,以卸载无用的 pytest 安装。

原因

PyCharm 编辑器中编译 Python 项目,其实是在 venv 虚拟环境下。

要在这个虚拟环境下安装 pytest,正常 Windows 系统下安装的 pytest 是读取不到的。

解决办法

  1. 先 activate 激活虚拟环境。(激活后命令行提示符有所不同,再输入命令时也有不同的颜色提示)
  1. 激活后在此环境下,最好先更新 pip,版本太旧的 pip 可能导致之后安装 pytest 失败。
  1. 在此环境下正确安装 pytest。

我这里已经安装过了,正常安装成功会出现如 "Successfully installed pytest-8.4.1" 的提示。

  1. 也可以检查 pytest 版本,确认是否安装成功了。

pytest 工具正常测试效果

  1. 每次重新打开终端,最好先重新 activate 激活虚拟环境。
  1. 直接执行 "pytest"。
  1. 正常测试编写的 "test_xxx.py" 文件。

补充

  1. 按照上述方法安装在 venv 虚拟环境下的 pytest,是只针对于当前项目的虚拟环境的。

如果换了另一个项目,就相当于是换了一个整体环境,那么对于新项目的虚拟环境,里面还是没有 pytest 工具的,需要重新激活环境,重新在新的项目虚拟环境下安装 pytest。

  1. 或者按照 "尝试解决过程" 1,直接安装 pytest 到系统下,需要测试项目时,在系统终端内切换到项目路径,以系统中安装的 pytest 工具去运行项目中的测试代码文件。

【如果只是需要运行 pytest 测试某一项目,选择 2 更方便】

【如果要在代码中 import pytest 相关的库,必须选择 1,只有在项目虚拟环境中安装,才能在代码中 import 到】

虚拟环境中安装前:

虚拟环境中安装后:

相关推荐
wanglei20070821 分钟前
生产者消费者
开发语言·python
清水白石00842 分钟前
《从零到进阶:Pydantic v1 与 v2 的核心差异与零成本校验实现原理》
数据库·python
leo__52044 分钟前
基于菲涅耳衍射积分的空心高斯光束传输数值模拟(MATLAB实现)
开发语言·matlab
DX_水位流量监测44 分钟前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
昵称已被吞噬~‘(*@﹏@*)’~1 小时前
【RL+空战】学习记录03:基于JSBSim构造简易空空导弹模型,并结合python接口调用测试
开发语言·人工智能·python·学习·深度强化学习·jsbsim·空战
电商API&Tina1 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
短剑重铸之日1 小时前
《SpringBoot4.0初识》第一篇:前瞻与思想
java·开发语言·后端·spring·springboot4.0
2501_941877981 小时前
从配置热更新到运行时自适应的互联网工程语法演进与多语言实践随笔分享
开发语言·前端·python
lsx2024061 小时前
Python 运算符详解
开发语言
酩酊仙人1 小时前
fastmcp构建mcp server和client
python·ai·mcp