VS Code 找不到 pytest 测试
VS Code not finding pytest tests
我在 vs-code 中设置了 PyTest,但是即使 运行 命令行中的 pytest 工作正常,也能找到 none 个测试。
(我正在使用 MiniConda 和 Python 3.6.6 虚拟环境在 Win10 上开发 Django 应用程序。VS 代码已完全更新,我有 Python 和 [=29 的调试器=] 已安装扩展)
Pytest.ini:
[pytest]
DJANGO_SETTINGS_MODULE = callsign.settings
python_files = tests.py test_*.py *_tests.py
vs-code 工作区设置:
{
"folders": [
{
"path": "."
}
],
"settings": {
"python.pythonPath": "C:\ProgramData\Miniconda3\envs\callsign\python.exe",
"python.unitTest.unittestEnabled": false,
"python.unitTest.nosetestsEnabled": false,
"python.unitTest.pyTestEnabled": true,
"python.unitTest.pyTestArgs": ["--rootdir=.\callsign", "--verbose"]
}
}
最后,VS 代码中 Python 测试日志的输出:
============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
Django settings: callsign.settings (from ini file)
rootdir: c:\Users\benhe\Projects\CallsignCopilot\callsign, inifile: pytest.ini
plugins: django-3.4.5
collected 23 items
<Package c:\Users\benhe\Projects\CallsignCopilot\callsign\transcription>
<Module test_utils.py>
<Function test_n_digits>
<Function test_n_alpha>
<Function test_n_hex>
<Function test_n_digits_in_range>
<Function test_v1_audiofilename>
<Function test_v2_audiofilename>
<Function test_v1_bad_int_filename>
<Function test_v1_bad_non_int_filename>
<Function test_bad_format>
<Function test_no_format>
<Function test_too_many_segments>
<Function test_too_few_segments>
<Function test_good_v2_filename>
<Function test_bad_year_v2_filename>
<Function test_bad_month_v2_filename>
<Function test_bad_day_v2_filename>
<Function test_bad_date_v2_filename>
<Function test_bad_short_serial_v2_filename>
<Function test_bad_long_serial_v2_filename>
<Function test_good_v3_filename>
<Function test_good_lowercase_block_v3_filename>
<Function test_bad_non_alpha_block_v3_filename>
<Function test_real_filenames>
======================== no tests ran in 1.12 seconds =========================
我是否遗漏了获取 vs-code 以查找测试的任何步骤?
编辑:我在阅读 issue 3911 后降级到 Pytest 4.0.1,测试发现现在可以工作了。
我也是。当我吹走 .pytest_cache
并重新运行 Python: Discover Unit Tests
时,我看到新生成的 .pytest_cache/v/cache/nodeids
包含所有测试,但我仍然收到抱怨 No tests discovered
.[=19 的对话框=]
- Python 3.7.2
- macOS 10.13.6
- VS 代码 1.30.2
- Python 扩展 2018.12.1
- Pytest 4.1.0
.vscode/settings.json
:
{
"python.linting.enabled": false,
"python.unitTest.unittestEnabled": false,
"python.unitTest.nosetestsEnabled": false,
"python.unitTest.pyTestEnabled": true,
"python.pythonPath": "venv3/bin/python"
}
测试位于名为 test
的顶级子目录中。 运行 pytest
手动工作。
如果有人遇到这个 post-2020,vscode-python
存储库中的 this issue 救了我的命。基本上,只需执行以下操作:
- 卸载
Python
扩展
- 从您的
~/.vscode
文件夹中删除包含扩展名的文件(我的看起来像 ms-python.python-[YEAR].[MONTH].[VERSION]
)
- 重新安装扩展程序
工作得很好。
我的 Python 插件和 Test Explorer 工作正常。
在我的例子中,命名 class 而没有 test_.py
是问题所在。换句话说,命名测试文件而不以 "test_"
开头,而不是 "tests_"
,这样浏览器就看不到问题。例如:test_.py
有效,但 tests_.py
、12345abcde.py
无效。
如果 vscode 未能发现测试,要检查的另一件事是确保它不会因为 coverage module being enabled. In my case the test cases were being discovered correctly but the discovery eventually kept failing due to low test coverage, as described . So first, make sure that the tests could actually be collected by pytest
as suggested :
而这样做
pytest --collect-only
然后确保您没有强制进行覆盖检查(例如在 setup.cfg
中),例如
addopts= --cov <path> -ra
2021 年 9 月,通过将 VS Code Python 扩展从版本 2021.9.1191016588 降级到版本 v2021.8.1159798656,我能够让 VS code 再次找到测试目录。要降级,请右键单击该扩展程序并单击“安装另一个版本...”
以下步骤对我有用(假设在 Visual Studio 代码中安装了最新的 PyTest):
- 确保没有错误(Visual Studio代码左下角)
- 在 Visual Studio 文件菜单中选择代码:文件 > 关闭文件夹(即关闭当前项目文件夹)并关闭 Visual Studio 代码。
- 重新打开 Visual Studio 代码并选择:文件 > 打开文件夹(重新打开包含您的 project/test 文件的文件夹)。
- 选择测试,应该可以从这里看到测试...
VScode需要指定python配置:
- 通过
Ctrl
+ shift
+ p
打开命令面板
- 然后写这个
>python: configure tests
然后按照程序说明
注意:在执行前面的步骤
之前,您可能需要(大多数情况下不需要)先执行
一件显而易见的事吸引了我...
测试文件夹层次结构需要每个文件夹中有 __init__.py
个文件。
我重构了我的测试,引入了一个额外的文件夹层,但忘记添加 __init__.py
个文件。
命令行没有抱怨,但 vscode 显示没有找到测试
我在 vs-code 中设置了 PyTest,但是即使 运行 命令行中的 pytest 工作正常,也能找到 none 个测试。
(我正在使用 MiniConda 和 Python 3.6.6 虚拟环境在 Win10 上开发 Django 应用程序。VS 代码已完全更新,我有 Python 和 [=29 的调试器=] 已安装扩展)
Pytest.ini:
[pytest]
DJANGO_SETTINGS_MODULE = callsign.settings
python_files = tests.py test_*.py *_tests.py
vs-code 工作区设置:
{
"folders": [
{
"path": "."
}
],
"settings": {
"python.pythonPath": "C:\ProgramData\Miniconda3\envs\callsign\python.exe",
"python.unitTest.unittestEnabled": false,
"python.unitTest.nosetestsEnabled": false,
"python.unitTest.pyTestEnabled": true,
"python.unitTest.pyTestArgs": ["--rootdir=.\callsign", "--verbose"]
}
}
最后,VS 代码中 Python 测试日志的输出:
============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
Django settings: callsign.settings (from ini file)
rootdir: c:\Users\benhe\Projects\CallsignCopilot\callsign, inifile: pytest.ini
plugins: django-3.4.5
collected 23 items
<Package c:\Users\benhe\Projects\CallsignCopilot\callsign\transcription>
<Module test_utils.py>
<Function test_n_digits>
<Function test_n_alpha>
<Function test_n_hex>
<Function test_n_digits_in_range>
<Function test_v1_audiofilename>
<Function test_v2_audiofilename>
<Function test_v1_bad_int_filename>
<Function test_v1_bad_non_int_filename>
<Function test_bad_format>
<Function test_no_format>
<Function test_too_many_segments>
<Function test_too_few_segments>
<Function test_good_v2_filename>
<Function test_bad_year_v2_filename>
<Function test_bad_month_v2_filename>
<Function test_bad_day_v2_filename>
<Function test_bad_date_v2_filename>
<Function test_bad_short_serial_v2_filename>
<Function test_bad_long_serial_v2_filename>
<Function test_good_v3_filename>
<Function test_good_lowercase_block_v3_filename>
<Function test_bad_non_alpha_block_v3_filename>
<Function test_real_filenames>
======================== no tests ran in 1.12 seconds =========================
我是否遗漏了获取 vs-code 以查找测试的任何步骤?
编辑:我在阅读 issue 3911 后降级到 Pytest 4.0.1,测试发现现在可以工作了。
我也是。当我吹走 .pytest_cache
并重新运行 Python: Discover Unit Tests
时,我看到新生成的 .pytest_cache/v/cache/nodeids
包含所有测试,但我仍然收到抱怨 No tests discovered
.[=19 的对话框=]
- Python 3.7.2
- macOS 10.13.6
- VS 代码 1.30.2
- Python 扩展 2018.12.1
- Pytest 4.1.0
.vscode/settings.json
:
{
"python.linting.enabled": false,
"python.unitTest.unittestEnabled": false,
"python.unitTest.nosetestsEnabled": false,
"python.unitTest.pyTestEnabled": true,
"python.pythonPath": "venv3/bin/python"
}
测试位于名为 test
的顶级子目录中。 运行 pytest
手动工作。
如果有人遇到这个 post-2020,vscode-python
存储库中的 this issue 救了我的命。基本上,只需执行以下操作:
- 卸载
Python
扩展 - 从您的
~/.vscode
文件夹中删除包含扩展名的文件(我的看起来像ms-python.python-[YEAR].[MONTH].[VERSION]
) - 重新安装扩展程序
工作得很好。
我的 Python 插件和 Test Explorer 工作正常。
在我的例子中,命名 class 而没有 test_.py
是问题所在。换句话说,命名测试文件而不以 "test_"
开头,而不是 "tests_"
,这样浏览器就看不到问题。例如:test_.py
有效,但 tests_.py
、12345abcde.py
无效。
如果 vscode 未能发现测试,要检查的另一件事是确保它不会因为 coverage module being enabled. In my case the test cases were being discovered correctly but the discovery eventually kept failing due to low test coverage, as described pytest
as suggested
pytest --collect-only
然后确保您没有强制进行覆盖检查(例如在 setup.cfg
中),例如
addopts= --cov <path> -ra
2021 年 9 月,通过将 VS Code Python 扩展从版本 2021.9.1191016588 降级到版本 v2021.8.1159798656,我能够让 VS code 再次找到测试目录。要降级,请右键单击该扩展程序并单击“安装另一个版本...”
以下步骤对我有用(假设在 Visual Studio 代码中安装了最新的 PyTest):
- 确保没有错误(Visual Studio代码左下角)
- 在 Visual Studio 文件菜单中选择代码:文件 > 关闭文件夹(即关闭当前项目文件夹)并关闭 Visual Studio 代码。
- 重新打开 Visual Studio 代码并选择:文件 > 打开文件夹(重新打开包含您的 project/test 文件的文件夹)。
- 选择测试,应该可以从这里看到测试...
VScode需要指定python配置:
- 通过
Ctrl
+shift
+p
打开命令面板
- 然后写这个
>python: configure tests
然后按照程序说明
注意:在执行前面的步骤
之前,您可能需要(大多数情况下不需要)先执行一件显而易见的事吸引了我...
测试文件夹层次结构需要每个文件夹中有 __init__.py
个文件。
我重构了我的测试,引入了一个额外的文件夹层,但忘记添加 __init__.py
个文件。
命令行没有抱怨,但 vscode 显示没有找到测试