如果 VS Code 的 Python 测试资源管理器在 macOS 上找不到测试、报告导入错误或似乎在错误的文件夹中进行搜索,请先检查 Python 测试工作目录和框架参数。将 python.testing.cwd 设置为测试命令所需的目录,然后刷新测试发现并检查 Python 输出日志。对于 unittest,还要检查其独立的 -s 起始目录参数;更改 cwd 并不能替代该设置。
确认 VS Code 正在使用哪个目录
打开测试资源管理器,并从命令面板(⇧⌘P)运行 Test: Refresh Tests。如果发现失败,打开 查看 > 输出(View > Output),从输出通道菜单中选择 Python,并查看最新的测试发现条目。Python 扩展会将测试发现错误发送到此日志中,这有助于区分路径问题与缺失框架或语法错误。VS Code 记录了这些发现和日志记录步骤。
检查 VS Code 窗口中打开的是哪个文件夹。在单文件夹工作区中,工作区通常就是项目根目录。如果您打开的是代码仓库的父文件夹或多根工作区,相对路径的解析起点可能与您预期的根目录不同。终端的当前目录不足以确定扩展所使用的目录;请查看测试发现输出和工作区设置。在多根工作区中,VS Code 允许针对特定文件夹进行设置,并且 ${workspaceFolder} 指的是与该设置关联的文件夹。VS Code 的工作区指南解释了多根文件夹,其变量参考涵盖了文件夹作用域的路径。
设置 Python 测试工作目录
例如,如果您打开了仓库根目录,但测试命令应该在其 backend 子文件夹中运行,请在 Mac 上使用 ⇧⌘P 打开工作区设置,并选择 Preferences: Open Workspace Settings (JSON)。将以下键添加或合并到现有的 JSON 对象中:
{
"python.testing.cwd": "${workspaceFolder}/backend"
}
请使用适用于您项目的实际目录。如果测试应在工作区根目录下运行,您可以省略此设置或将其设置为 ${workspaceFolder}。如果您不确定它是相对于哪个根目录,请避免使用类似 backend 这样单纯的相对值;显式的工作区变量可以让预期的基准路径更加明确。工作区设置会覆盖用户设置,因此如果您的更改似乎没有生效,请检查这两个作用域。VS Code 将单文件夹工作区设置存储在 .vscode/settings.json 中;使用“设置”编辑器的“工作区”选项卡可以查看当前生效的值。VS Code 的设置文档中介绍了工作区设置和优先级。
Python 扩展的 cwd 设置是可选的。其文档指出,设置该项还会调整 pytest 的 --rootdir;rootdir 是 pytest 的项目根配置,因此不要将其与每个框架的测试搜索参数混为一谈。Python 测试设置参考中说明了此 pytest 行为。
检查特定框架的发现参数
对于 pytest,请检查 python.testing.pytestArgs 中是否存在指向非预期位置的路径。诸如 tests 之类的路径会告诉 pytest 要收集哪些内容,而 python.testing.cwd 则设置了工作目录上下文。仅保留项目所需的参数,并使路径与该上下文保持一致。编辑完成后,再次运行 Test: Refresh Tests。该扩展会在当前文件夹及其子文件夹下发现符合其命名规范的 pytest 文件;测试发现仍可能因与 cwd 无关的原因失败,包括未安装 pytest 或测试文件存在错误。官方测试指南列出了发现行为和常见失败报告。
对于 unittest,请单独检查 python.testing.unittestArgs。其默认参数包括 -s .,其中 -s 用于选择起始目录。如果测试位于 backend/tests 下,并且 cwd 是仓库根目录,请相应地配置起始目录,例如:
{
"python.testing.cwd": "${workspaceFolder}",
"python.testing.unittestEnabled": true,
"python.testing.pytestEnabled": false,
"python.testing.unittestArgs": ["-v", "-s", "backend/tests", "-p", "*test*.py"]
}
这是使用 unittest 的项目示例;如果您的框架或文件命名不同,请勿原样照抄。unittest 还要求发现的测试文件必须是可导入的模块或包。如果日志显示测试子文件夹中存在导入问题错误,请检查包结构;VS Code 指出,添加 __init__.py 文件可以使此类文件夹变为可导入状态。官方指南介绍了 unittest 的 -s 和 -p 选项。
刷新并排查剩余失败问题
更改设置后,再次运行 Test: Refresh Tests。如果 VS Code 仍然使用非预期的环境,请运行 Python: Select Interpreter 并选择安装了测试框架的环境;所选解释器将用于包括测试在内的各项 Python 功能。VS Code 的 Python 环境指南解释了解释器的选择方法。
如果输出仍显示错误的路径,请将日志中记录的工作目录与工作区根目录及配置的测试参数进行比对。如果路径正确但测试发现仍然失败,请根据实际错误进行排查:检查框架安装、导入错误、语法错误以及测试文件名模式。调整 cwd 无法解决这些独立的问题。如果配置正确的项目仍然记录了不一致的路径或忽略了该设置,请在报告问题时截取 Python 输出和相关设置;VS Code 中并没有可以强制每个测试框架使用不同目录的通用命令。
来源
Visual Studio Code 中的 Python 测试 — Microsoft
用户和工作区设置 — Microsoft
多根工作区 — Microsoft
变量参考 — Microsoft
VS Code 中的 Python 环境 — Microsoft