VS代码找不到pytest测试

时间:2019-01-27 11:04:31

标签: python python-3.x visual-studio-code pytest pytest-django

我在vs代码中设置了PyTest,但是即使从命令行运行pytest都可以,但是找不到任何测试。

(我正在使用MiniConda和Python 3.6.6虚拟环境在Win10上开发Django应用。VS Code已完全更新,并且我安装了适用于Chrome扩展程序的Python和调试器)

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代码查找测试的任何步骤?

4 个答案:

答案 0 :(得分:2)

如果有人在2020年遇到这个问题,vscode-python回购中的this issue挽救了我的性命。基本上,只需执行以下操作:

  1. 卸载Python扩展名
  2. ~/.vscode文件夹中删除包含扩展名的文件(看起来像ms-python.python-[YEAR].[MONTH].[VERSION]
  3. 重新安装扩展程序

像魅力一样工作。

答案 1 :(得分:1)

编辑:阅读issue 3911后,我降级为Pytest 4.0.1,并且“测试发现”现在可以正常工作。


我也是。当我吹散esModuleInterop并重新运行.pytest_cache时,我看到刚生成的Python: Discover Unit Tests包含了所有测试,但是我仍然收到对话框抱怨.pytest_cache/v/cache/nodeids

  • Python 3.7.2
  • macOS 10.13.6
  • VS代码1.30.2
  • Python扩展2018.12.1
  • Pytest 4.1.0

No tests discovered

.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即可。

答案 2 :(得分:1)

我的Python插件和Test Explorer运行正常。

在我的情况下,命名没有test_.py的类是个问题。换句话说,在不以"test_"而不是"tests_"开头的情况下命名测试文件就可以了,因此资源管理器不会看到问题。例如:test_.py有效,但是tests_.py12345abcde.py不起作用。

答案 3 :(得分:1)

如果vscode无法发现测试,则要检查的另一件事是确保由于启用了coverage模块而没有这样做。在我的情况下,测试用例被正确发现,但是由于测试覆盖率低,发现最终仍然失败,如here所述。因此,首先,请确保pytest实际上可以按照建议的here收集测试:

pytest --collect-only

,然后确保您不强制使用例如

的覆盖率检查(例如在setup.cfg中)
addopts= --cov <path> -ra