web-dev-qa-db-ja.com

VSCode pytestテストの検出が失敗する

Pytestテストの検出に失敗しました。 UIの状態:

Test discovery error, please check the configuration settings for the tests

出力ウィンドウの状態:

Test Discovery failed: 
Error: Traceback (most recent call last):
  File "C:\Users\mikep\.vscode\extensions\ms-python.python-2019.4.11987\pythonFiles\testing_tools\run_adapter.py", line 16, in <module>
    main(tool, cmd, subargs, toolargs)
  File "C:\Users\mikep\.vscode\extensions\ms-python.python-2019.4.11987\pythonFiles\testing_tools\adapter\__main__.py", line 90, in main
    parents, result = run(toolargs, **subargs)
  File "C:\Users\mikep\.vscode\extensions\ms-python.python-2019.4.11987\pythonFiles\testing_tools\adapter\pytest.py", line 43, in discover
    raise Exception('pytest discovery failed (exit code {})'.format(ec))
Exception: pytest discovery failed (exit code 3)

これが私の設定です:

{
    "python.pythonPath": ".venv\\Scripts\\python.exe",
    "python.testing.pyTestArgs": [
        "tests"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pyTestEnabled": true
}

コマンドラインからpytestを正常にFWIW実行できます。

12
devlife

これは、12要素のアプリの一般的な構成であるため、プロジェクトの環境設定に.envファイルを使用するユーザーに影響を与える可能性があるため、ここに回答を追加すると思いました。

私の例では、仮想環境の管理にpipenvを使用しており、プロジェクトのルートディレクトリに.envファイルがあることを前提としています。

私のvscodeワークスペース設定jsonファイルは以下のようになります。ここで私にとって重要なのは"python.envFile": "${workspaceFolder}/.env",でした

{
    "python.pythonPath": ".venv/bin/python",
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.linting.pycodestyleEnabled": false,
    "python.linting.flake8Enabled": false,
    "python.linting.pylintPath": ".venv/bin/pylint",
    "python.linting.pylintArgs": [
        "--load-plugins=pylint_Django",
    ],
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": [
        "--line-length",
        "100"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.testing.pytestPath": ".venv/bin/pytest",
    "python.envFile": "${workspaceFolder}/.env",
    "python.testing.pytestArgs": [
        "--no-cov"
    ],
}

これが誰かが私がこれを理解するのに費やした時間を節約することを願っています。

0
Wayne Lambert

私は同じ問題を抱えており、pytest.iniファイル。そのファイルからaddoptsのほとんどを削除すると、問題が解決しました。

0
Brendan Abel

https://docs.pytest.org/en/latest/usage.html#possible-exit-codes を見ると、pytest自体が内部エラーに陥っているようです。

0
Brett Cannon

私のケースでは、次のエラーが表示されます:テスト検出が失敗しました:SyntaxError:位置0のJSONで予期しないトークンR

これをどのように処理するのですか?

Python Test Explorer for VSC extensionも試してみましたが、これは正常に機能しますが、組み込みのテスト検出がエラーで失敗します。

python拡張バージョンは2020.3.71659です

0
A_Rybin

テストの検出を開始する前に、python.testing.cwdがテストディレクトリを正しく指し、python.testing.pytestEnabledtrueに設定されていることを確認してください。

これらの要件が正しく設定されたら、テスト検出とその出力を実行します([〜#〜] output [〜#〜]ウィンドウを参照)。次のようなものが表示されます。

python $HOME/.vscode/extensions/ms-python.python-$VERSION/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir $ROOT_DIR_OF_YOUR_PROJECT -s --cache-clear
Test Discovery failed: 
Error: ============================= test session starts ==============================
<SETTINGS RELATED TO YOUR MACHINE, PYTHON VERSION, PYTEST VERSION,...>
collected N items / M errors
...

ここで最後の行を強調表示することが重要です:collected N items / M errors。次の行には、pytestによって検出されたテストに関する情報が含まれます。したがって、テストは発見可能ですが、正しい実行に関連するエラーがあります。

次の行には、エラーが含まれますほとんどの場合、誤ったインポートに関連しています

すべての依存関係が以前にダウンロードされていることを確認してください。特定のバージョンの依存関係で作業している場合(requirements.txtファイルにはyour_package == X.Y.Zのようなものがあります)、それが必要な正しいバージョンであることを確認してください。

0
cpinamtz