web-dev-qa-db-ja.com

vsコードはPytestテストを見つけません

私はVSコードでPiltestセットアップを持っていますが、コマンドラインからPITESTを実行していてもテストのどれも見つからない。

(私は、MinicondaとA Django 3.6.6 Virtual Envを使用してWin10上のPythonアプリを開発しています。VSコードは完全に更新され、PythonとChromeのデバッガがあります。 ]拡張機能がインストールされています)

Pytest.ini:

_[pytest]
Django_SETTINGS_MODULE = callsign.settings
python_files = tests.py test_*.py *_tests.py
_

vSコードワークスペース設定:

_{
    "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"]
    }
}
_

最後に、Pythonの[<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コードを取得するための手順がありますか?

6
Ben

[〜#〜]編集[〜#〜]:読んだ後のPytest 4.0.1にダウングレードしました 問題3911 テスト発見は今機能しています。


私も。 .pytest_cacheを吹き飛ばしてPython: Discover Unit Testsを再実行すると、新たに生成された.pytest_cache/v/cache/nodeidsがすべてのテストを含んでいますが、No tests discoveredについて不平を言うダイアログが表示されます。

  • 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手動で機能します。

3

2020年の誰かがこれに渡って来るなら、 この問題vscode-python Repoは私の人生を保存しました。基本的に、次のようにしてください。

  1. Python拡張子をアンインストールします
  2. ~/.vscodeフォルダからの拡張子を含むファイルを削除します(ms-python.python-[YEAR].[MONTH].[VERSION])。
  3. 拡張子を再インストールしてください

魅力のように働いた。

3
Arcsector

Vscodeがテストの検出に失敗した場合、チェックするもう1つのことは、 Coverage モジュールが有効になっているため、そうしないことを確認することです。私の場合には、テストケースは正しく発見されていましたが、説明されているように、テスト対象が低いために最終的には失敗し続けました こちら 。だからまず、テストが実際にpytestによって実際に収集されたことを確認してください こちら

pytest --collect-only
 _

それからあなたがカバレッジチェックを強制していないことを確認してください(例えば、setup.cfg)_).

addopts= --cov <path> -ra
 _
1

My Pythonプラグインとテストエクスプローラは大丈夫です。

私の場合、test_.pyなしでクラスを命名しました。つまり、"test_"では"tests_"で始まらずにテストファイルをネーミングすることで、エクスプローラが問題を表示しないようにします。 ex:test_.pyは機能しますが、tests_.py12345abcde.pyは機能しません。

1
Kako