web-dev-qa-db-fra.com

La découverte du test Pytest VSCode échoue

La découverte du test Pytest échoue. L'interface utilisateur indique:

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

La fenêtre de sortie indique:

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)

Voici mes paramètres:

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

Je peux exécuter pytest à partir de la ligne de commande avec succès FWIW.

12
devlife

Je pensais simplement ajouter ma réponse ici car cela pourrait bien affecter quelqu'un qui utilise un .env fichier pour les paramètres d'environnement de leur projet, car il s'agit d'une configuration courante pour les applications à 12 facteurs.

Mon exemple suppose que vous utilisez pipenv pour la gestion de votre environnement virtuel et que vous disposez d'un .env fichier dans le répertoire racine du projet.

Mon fichier json de paramètres d'espace de travail vscode ressemble à ci-dessous. La ligne cruciale pour moi ici était "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"
    ],
}

J'espère que cela fera gagner du temps à quelqu'un pour comprendre cela.

0
Wayne Lambert

J'ai eu ce même problème et je l'ai retrouvé jusqu'à mon pytest.ini fichier. La suppression de la plupart des addopts de ce fichier a résolu le problème.

0
Brendan Abel

En regardant https://docs.pytest.org/en/latest/usage.html#possible-exit-codes il semble que le pytest lui-même tombe à cause d'une erreur interne.

0
Brett Cannon

Mon cas me donne l'erreur ci-dessous: Échec de la découverte du test: SyntaxError: jeton R inattendu dans JSON à la position 0

Alors, comment gérer cela?

A également essayé le Python Test Explorer pour l'extension VSC et cela fonctionne bien, mais la découverte de test intégrée échoue avec une erreur.

la version de l'extension python est 2020.3.71659

0
A_Rybin

Avant de commencer la découverte des tests, vérifiez que python.testing.cwd pointe correctement vers votre répertoire de tests et votre python.testing.pytestEnabled est défini sur true.

Une fois ces exigences correctement définies, exécutez la découverte des tests et sa sortie (voir [~ # ~] fenêtre de sortie [~ # ~] ). Vous devriez voir quelque chose comme ceci:

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
...

Il est important de souligner ici la dernière ligne: collected N items / M errors. Les lignes suivantes contiennent des informations sur les tests découverts par pytest. Donc vos tests sont découvrables mais il y a des erreurs liées à leur bonne exécution.

Les lignes suivantes contiendront les erreurs qui dans la plupart des cas seront liés à une importation incorrecte.

Vérifiez que toutes vos dépendances ont été téléchargées précédemment. Si vous travaillez avec des versions spécifiques de dépendances (sur lerequirements.txt fichier, vous avez quelque chose comme your_package == X.Y.Z) assurez-vous que c'est la bonne version dont vous avez besoin.

0
cpinamtz