2
votes

Pourquoi pycharm ne reconnaît-il pas mes tests pytest et affiche la sortie du test?

Je suis nouveau sur pytest et j'essaye d'écrire des modules de test pour mon application. Ma structure de répertoire est:

 python -m pytest --setup-show tests/test_db.py 
========================================================== test session starts ===========================================================
platform darwin -- Python 3.6.1, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: /Users/cbogdon/coding/platinum-onboard/broker, inifile:
collected 4 items                                                                                                                        

tests/test_db.py 
        tests/test_db.py::TestDBFunctions::test_uuid.
        tests/test_db.py::TestDBFunctions::test_invalid_dbF
        tests/test_db.py::TestDBFunctions::test_valid_db.
        tests/test_db.py::TestDBFunctions::test_already_created_database.

================================================================ FAILURES ================================================================
____________________________________________________ TestDBFunctions.test_invalid_db _____________________________________________________

self = <test_db.TestDBFunctions object at 0x102606438>

    def test_invalid_db(self):
>       ret = db.initialize_database()
E       TypeError: initialize_database() missing 1 required positional argument: 'dbname'

tests/test_db.py:14: TypeError
=================================================== 1 failed, 3 passed in 0.08 seconds ==================================================

Je veux tester le module db.py.

Je configure pycharm pour utiliser pytest comme testeur. Quand j'exécute le test_db.py dans pycharm, j'obtiens:

python -m pytest --setup-show tests/test_db.py 

C'est presque comme si pycharm n'exécutait pas le pytest. Même si je clique avec le bouton droit sur la flèche verte à gauche de l'une de mes fonctions de test, un menu apparaît et indique que je peux cliquer: "Exécuter 'pytest pour test_db.py::TestDBFunctions::test_valid_db'"

Si je l'exécute sur la ligne de commande en utilisant:

/Users/cbogdon/virtualenv/platinum-onboard/bin/python /Users/cbogdon/coding/platinum-onboard/broker/tests/test_db.py

Process finished with exit code 0

j'obtiens la sortie de test appropriée.

broker/
broker/tests
broker/tests/conftest.py
broker/tests/test_db.py
broker/db.py

Y a-t-il quelque chose spécial que je dois faire dans PyCharm?

Désolé pour la question du débutant, mais je n'arrive pas à comprendre ça du tout!


0 commentaires

3 Réponses :


8
votes

Veuillez vous assurer que Paramètres> Outils> Python Integrated Tools> Default test runner est défini sur pytest et nettoyer le cache et redémarrer pycharm (surtout si ce paramètre a été modifié dans passé)


2 commentaires

Le lanceur de test par défaut a été défini. J'ai nettoyé le cache et redémarré pycharm et j'obtiens le même résultat. Il ne montre aucune sortie de test!


Changer le testeur par défaut comme celui-ci a fonctionné pour moi. Sachez cependant que si vous avez déjà exécuté cette classe auparavant, vous devez également supprimer la configuration d'exécution qui a été créée! Ce n'est qu'alors que PyCharm créera automatiquement une nouvelle configuration pytest. Sinon, il essaiera simplement d'utiliser l'ancienne configuration d'exécution, qui est une configuration d'exécution python par défaut et n'exécute donc pas vos tests



6
votes

J'ai trouvé la réponse: je devais:

Dans la fenêtre Exécuter / Déboguer les Configurations, cliquez sur le bouton + situé dans le coin supérieur gauche. Accédez aux tests Python et sélectionnez py.test. Cliquez sur le bouton OK.

Dans le volet gauche, vous pouvez voir que les tests Python sont créés. Dans le volet droit de la zone de texte Nom, donnez la valeur py.test dans module_name.py Vous devez toujours préfixer le nom du fichier de test Python avec les mots py.test in.

Pour la zone de texte Cible, spécifiez le chemin d'accès au fichier de test Python.

Pour la zone de texte Répertoire de travail, spécifiez le chemin d'accès au répertoire contenant les fichiers de test Python.

Cliquez sur le bouton OK.

Pour tout ce qui a fonctionné et maintenant ça marche!


0 commentaires

1
votes

Ouvrez Configurations Exécuter / Déboguer > Tests Python > cliquez sur le bouton + > Pytest > Dans cible: choisissez le nom du module > Ctrl + Espace pour qu'il puisse compléter le code pour chaque test unitaire.

capture d'écran ici


0 commentaires