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