VSCode中Pytest测试发现失败但pytest --collect-only正常的问题求助
解决VSCode中Pytest测试发现错误及本地包导入问题
1. 修正VSCode的Pytest配置
你的settings.json里使用了未被VSCode识别的$MY-PACKAGE变量,且工作目录设置错误,导致测试发现逻辑和终端执行不一致。修改配置如下:
{ "files.autoSave": "onFocusChange", "python.testing.pytestArgs": [ "tests", "--no-cov" ], "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, "python.testing.cwd": "${workspaceFolder}", "python.testing.autoTestDiscoverOnSaveEnabled": true }
${workspaceFolder}是VSCode内置变量,自动指向当前打开的项目根目录(即MY-PACKAGE文件夹),和你终端执行pytest的工作目录保持一致- 移除手动指定的
--rootdir,pytest会自动从项目根目录识别测试结构
2. 解决本地包导入问题,避免使用pip线上版本
要让测试文件直接引用本地开发的包,而非pip安装的线上版本,有两种可靠方式:
方式一:以可编辑模式安装本地包
在项目根目录的终端执行:
pip install -e .
这会把本地包以"可编辑"模式安装到当前conda环境,后续修改本地代码无需重新安装,Python会自动加载最新的本地版本。之后在测试文件中正常导入:
from my_package.predict import read_data
(注意:如果你的包文件夹名是my-package,需确保setup.py里的name字段设置为my_package,Python包名通常使用下划线而非连字符)
方式二:手动添加项目路径到Python环境
如果不想安装包,可在测试文件开头添加以下代码,将项目根目录加入Python搜索路径:
import sys from pathlib import Path # 把项目根目录(tests文件夹的父目录)加入sys.path sys.path.append(str(Path(__file__).parent.parent)) from my_package.predict import read_data
3. 确认VSCode使用的Python解释器正确
- 点击VSCode右下角的Python版本标识,切换到你创建的conda环境
- 或按下
Ctrl+Shift+P(Windows/Linux)/Cmd+Shift+P(Mac),输入Python: Select Interpreter,选择对应的conda环境
4. 重启VSCode清理缓存
执行Ctrl+Shift+P输入Developer: Reload Window重启VSCode窗口,清除可能存在的测试发现缓存,之后重新触发测试发现。
内容的提问来源于stack exchange,提问作者Sophie Frankel
相关产品推荐
相关产品推荐

