提问人:RSevier 提问时间:11/3/2023 更新时间:11/3/2023 访问量:51
在 vscode 中调试 Python unittest 的行为与正常测试执行不同
Debugging Python unittest in vscode behaves differently than normal test execution
问:
操作系统是 Windows 10 Python:3.10(在 3.11 和 3.9 中的行为相同) 这在 10 天前以前工作正常,所以我怀疑软件更新是罪魁祸首。
我正在尝试使用测试运行程序在 vscode 中调试一个简单的 python 单元测试。它失败并显示 ModuleNotFound 错误,但仅在调试模式下运行测试时才会失败。打印 sys.path 时,通过 debug 选项运行根工作区目录时缺少该目录。
另一个奇怪的是,在运行单个单元测试时,我发现调试器正在进入其他测试文件,并且在这些文件中失败。我必须将它们从我的测试目录中移出。
最小文件树
proj.
├───lib
│ main.py
│
└───test
test_main.py
test_main contains:
from lib.main import m
我尝试过的事情:
- 将我的整个 vscode 配置克隆到 MacOS,它按预期工作。检查 sys.path 时,根目录是调试器的一部分
- 将 VSCode 回滚了几个月的版本。
- 将 Pylance 和 Python 扩展也回溯了几个月的版本。
- 将工作区路径添加到 sys.path 列表,但这会导致我的 azure cli 进一步出现错误,这些错误在常规执行中运行时不会发生。
- settings.json python.testing.cwd 不与 sys.path 或任何其他有用的配置一致(也通过移动所有配置文件在 macOS 操作中排除)
- 禁用了除 Python 和 Pylance 之外的所有 VSCode 扩展
这里的任何帮助将不胜感激!一周前运行良好!
答:
0赞
MingJie-MSFT
11/3/2023
#1
可以使用 打开命令面板,键入“Python:配置测试”,然后选择显示的选项。Ctrl+Shift+P
请确保项目的根目录包含在测试发现路径中。
如果仍然不起作用,则可以将项目的根目录添加到环境变量中。这可以在工作区目录中的文件中完成。PYTHONPATH
.env
另一个奇怪的是,在运行单个单元测试时,我发现 调试器正在进入其他测试文件,但这些文件失败。我有 将它们移出我的测试目录。
默认情况下,VS Code 的 Python 扩展将发现工作区中的所有测试文件。为此,您可以设置所需的测试文件的名称,并在上述设置之后进行相应的设置。例如,您可以只将文件设置为以 test 结尾,然后在设置中选择 *test.py。
评论
0赞
RSevier
11/3/2023
使用 .env 文件看起来就像这里的解决方案一样!我创建了一个包含 PYTHONPATH='.' 内容的 .env,VSCode 处理其余的工作。 谢谢!
评论