debugging vscode中的Python unittest行为与正常测试执行不同

vhipe2zx  于 2023-11-22  发布在  Vscode
关注(0)|答案(1)|浏览(197)

操作系统是Windows 10 Python:3.10(3.11和3.9中的行为相同)这是以前的工作罚款10天前,所以我怀疑软件更新是罪魁祸首。
我尝试使用test runner在vscode中调试一个简单的python unittest。它失败了,并显示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回滚了几个月的版本。
  • Rolled Pylance和Python扩展也回到了几个月前的版本。
  • 将工作区路径添加到sys.path列表中,但这会导致我的azure命令行中出现错误,而这些错误在常规执行中不会发生。
  • settings.json python.testing.cwd不符合sys.path或任何其他有用的配置(也通过移动所有配置文件排除了macos操作)
  • 禁用了除Python和Pylance之外的所有VSCode扩展

任何帮助在这里将非常感谢!这运行良好的一个星期前!

kmpatx3s

kmpatx3s1#

您可以使用Ctrl+Shift+P打开命令行,键入“Python:Configure Tests”,然后选择出现的选项。


的数据



确保项目的根目录包含在测试发现路径中。
如果还是不行,你可以将你的项目的根目录添加到PYTHONPATH环境变量中。这可以在你的工作区目录下的.env文件中完成。
另一个奇怪的情况是,当运行一个单元测试时,我发现调试器进入了其他测试文件,并且在这些文件中失败了,我必须将它们移出我的测试目录。
默认情况下,VS Code的Python扩展将发现工作区中的所有测试文件。您可以通过设置所需测试文件的名称并在上面提到的设置之后相应地设置它来实现这一点。例如,您可以将文件设置为以test结尾,并在设置中选择 *test.py。


相关问题