在 vscode 中调试 Python 单元测试的行为与正常测试执行不同

问题描述 投票:0回答:1

操作系统是Windows 10 Python:3.10(3.11 和 3.9 中的行为相同) 这在 10 天前运行良好,所以我怀疑是软件更新造成的。

我正在尝试使用测试运行器在 vscode 中调试一个简单的 python 单元测试。它会失败并出现 ModuleNotFound 错误,但仅当在调试模式下运行测试时才会失败。打印 sys.path 时,通过调试选项运行时缺少根工作空间目录。

另一个奇怪的地方是,当运行单个单元测试时,我发现调试器正在进入其他测试文件并在这些文件中失败。我必须将它们移出我的测试目录。

最小的文件树

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 扩展

如有任何帮助,我们将不胜感激!一周前还运行得很好!

python visual-studio-code debugging python-unittest
1个回答
0
投票

您可以使用

Ctrl+Shift+P
打开命令面板,输入“Python:配置测试”,然后选择出现的选项。

确保您的项目的根目录包含在测试发现路径中。

如果还是不行,你可以将你的项目根目录添加到

PYTHONPATH
环境变量中。这可以在工作区目录中的
.env
文件中完成。

另一个奇怪的地方是,当运行单个单元测试时,我发现 调试器正在进入其他测试文件并在这些文件中失败。我有 将它们移出我的测试目录。

默认情况下,VS Code 的 Python 扩展将发现工作区中的所有测试文件。您可以通过设置您想要的测试文件的名称并在上述设置后进行相应的设置来完成此操作。例如,您可以将文件设置为以 test 结尾,然后在设置中选择 *test.py 。

© www.soinside.com 2019 - 2024. All rights reserved.