当配置为单元测试时,Visual Studio Code 会触发 pytest 的使用

Col*_*ame 10 python-unittest visual-studio-code

我最近在几个项目中成功使用了标准的Python单元测试框架,但是在过去的几天里它无法像以前一样工作。一个问题是,尽管我从未使用过pytest ,但它现在似乎尝试在全新项目中的测试发现中使用pytest

  • 尝试过的 VS Code 版本:1.80.0、1.79.2 和 1.79.1(每种情况下的用户设置)
  • Python 扩展:v2023.12.0
  • 尝试过的Python版本:3.9.13、3.10.6、3.10.11
  • Windows 10 版本 22H2(操作系统内部版本 19045.3086)

重现步骤,请参阅以下文章在 Visual Studio Code 中测试 Python以了解文件内容的详细信息:

  1. 创建新文件夹
  2. 在 VS Code 中打开文件夹
  3. 在 VS Code 中,创建文件inc_dec.py (请参阅上面链接的文章)
  4. 确保使用 python 3.9+ 的普通安装作为环境(有关我尝试过的内容,请参阅上面的列表)
  5. 新增文件夹tests
  6. 在其中创建文件test_unittest.py和空文件__init__.py(请参阅上面链接的文章)
  7. 使用以下选项配置 Python 测试(请参阅上面链接的文章):
    1. 标准Python单元测试框架
    2. tests文件夹
    3. 图案test_*.py

对我来说,尽管设置清楚地显示单元测试已启用而pytest未启用,但这会产生“Pytest 发现错误” Pytest 发现错误 Python OUTPUT 日志也表明了这一点,例如

2023-07-14 13:08:29.745 [info] Running discovery for unittest using the new test adapter.
2023-07-14 13:08:29.771 [info] > C:\Python\3.10.11\python.exe -m pytest -p vscode_pytest --collect-only
Run Code Online (Sandbox Code Playgroud)

我期待测试被发现(并最终可调试)。

我尝试过的事情包括:

  • 停止并重新启动 VS Code
  • 重启
  • 恢复到 VS Code 的早期版本(如上所列)
  • python 的不同基本版本(如上所列)
  • 以前在其他项目中工作过的虚拟环境
  • PyCharm - 在那里工作正常,但由于 Jupyter Notebook 要求而无法使用
  • running python -m unittest discover -v -s . -p "test_*.py"- 运行测试,但 IDE 仍然没有发现它们
  • 删除__pycache__文件夹
  • 省去tests文件夹

顺便说一句,现有项目仍然会发现测试,但在 VS Code 中,它们在调试测试时不再遇到断点,并且在运行测试时,它们现在会抱怨子文件夹中引用的源文件(我已经看到了一些关于修复的建议)我见过没有一个对我有用)。这可能与我现在记录的问题无关,但在此提及以防它影响提出的建议。对于上面的测试代码和现有项目,在 PyCharm 社区版中进行测试和测试调试工作,但不幸的是,该版本不支持运行和调试我们需要的 Jupyter Notebooks。调试其他 python 文件时会命中断点。

Col*_*ame 7

这可能最终成为一个短期问题。有两个解决方法为我解决了这个问题,根据 GitHub 问题VS Code python unittest无法导入测试文件夹之外的模块中的评论。

A. 将 VSCode 中的 Python 扩展版本从 v2023.12.0 恢复为 v2023.8.0。

B. 将设置"python.experiments.optOutFrom": ["pythonTestAdapter"]插入用户设置(而不是工作区设置)。请注意尾随逗号。

我现在可以调试 python unittest 测试。

更新

导致此问题的错误已在 Python 扩展 v2023.19 中修复。