You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

虚拟环境中直接运行pytest报ModuleNotFoundError,仅python -m pytest可正常运行的问题求助(VS Code+Windows 10环境)

解决VS Code中直接运行pytest命令失败,无法使用内置测试工具的问题

看起来你遇到的问题核心是直接执行pytest和python -m pytest的路径差异——后者会自动把当前项目根目录加入Python的sys.path,让测试脚本能找到你项目里的自定义模块(比如cli_testapp),而前者默认不会,这就导致了测试发现时的ModuleNotFoundError: No module named 'cli_testapp'。下面给你几个可行的解决方案,按从简单到灵活的顺序排列:

方法1:添加pytest配置文件,强制添加项目路径到sys.path

这是最通用的方法,不管你是在终端直接跑pytest还是用VS Code测试工具,都能生效:

  • 在你的项目根目录(也就是C:\Users\user\Documents\Programming\Testing)创建一个名为pytest.ini的文件,内容如下:
[pytest]
pythonpath = .

这个配置会告诉pytest把当前目录(项目根)加入Python的模块搜索路径,这样测试脚本里from cli_testapp import cli_testapp就能正常找到模块了。

创建完之后,你可以先在激活虚拟环境的终端里直接运行pytest测试一下,如果能正常执行,那VS Code的测试工具也会自动识别这个配置,无需额外修改。

方法2:修改VS Code测试配置,让它用python -m pytest的方式运行

如果不想改pytest配置,也可以直接调整VS Code的Python测试设置,让它和你手动运行的命令一致:

  1. 打开VS Code的设置界面(快捷键Ctrl+,),或者直接编辑.vscode/settings.json文件
  2. 添加或修改以下配置:
"python.testing.pytestPath": "python",
"python.testing.pytestArgs": [
    "-m",
    "pytest",
    "--rootdir",
    "${workspaceFolder}",
    "-s",
    "tests"
]

这样设置后,VS Code的测试工具会调用python -m pytest加上后面的参数,和你手动运行的命令完全一致,自然就能正常发现和执行测试了。

方法3:确保虚拟环境中的pytest是正确安装的

有时候全局pytest和虚拟环境pytest的冲突也会导致这类问题,你可以先确认虚拟环境里的pytest是最新且正确安装的:

  1. 激活你的虚拟环境(Testing)
  2. 运行pip install --upgrade pytest重新安装pytest到虚拟环境
  3. 运行where pytest(Windows终端),确认输出的路径是虚拟环境的Scripts目录(比如C:\Users\user\Documents\Programming\Testing\venv\Scripts\pytest.exe)
    这样可以保证你直接运行pytest时调用的是虚拟环境里的版本,避免全局环境的干扰。

验证一下:不管用哪种方法,先在终端里测试直接运行pytest是否正常,如果没问题,再打开VS Code的测试面板,重新触发测试发现,应该就能看到你的测试用例了。

内容的提问来源于stack exchange,提问作者Andreas L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:52:36