198 votes

Comment configurer PyCharm pour qu'il exécute les tests py.test ?

Je souhaite commencer à écrire des tests unitaires pour mon code Python, et l'outil py.test semble être un meilleur pari que le cadre de Python. unittest . J'ai donc ajouté un répertoire "tests" à mon projet, et j'ai ajouté test_sample.py à elle. Je veux maintenant configurer PyCharm pour qu'il exécute tous les tests de mon répertoire "tests".

PyCharm prétendument supporte py.test dans son programme de test. Vous êtes censé pouvoir créer une configuration d'exécution/débogage pour exécuter vos tests, et PyCharm a prétendument une fonction Boîte de dialogue "créer une configuration" spécifique pour py.test . Mais c'est là toute l'étendue de leur documentation sur le sujet, et je ne trouve nulle part cette prétendue boîte de dialogue.

Si je clique avec le bouton droit de la souris sur le répertoire dans la fenêtre de l'outil Projet, j'obtiens supposé pour voir un élément de menu "Créer <nom>", mais le seul élément de menu commençant par "Créer" est "Créer une configuration d'exécution". D'accord, la documentation est peut-être erronée, et "Créer une configuration d'exécution" semble prometteur. Malheureusement, les deux seuls éléments de son sous-menu sont "Unittests in C:\mypath... "et "Doctests in C:\mypath... "Je n'utilise ni unittest ni doctest. Il n'y a pas d'élément de menu pour py.test.

Si j'ouvre mon test_sample.py et que je fais un clic droit dans la fenêtre de l'éditeur, j'obtiens les éléments de menu "Create <name>" promis : il y a "Create 'Unittests in test_sa...'...", suivi de "Run 'Unittests in test_sa...'" et "Debug 'Unittests in test_sa...'". Encore une fois, tout cela est spécifique au framework unittest ; rien pour py.test.

Si j'essaie les éléments de menu qui disent "unittest", j'obtiens une boîte de dialogue avec des options pour "Name", "Type", un cadre "Tests" avec "Folder" et "Pattern" et "script" et "Class" et "Function", etc. Cela ressemble exactement à ce qui est documenté comme étant la boîte de dialogue permettant d'ajouter un configuration pour les tests unitaires Python et non comme les options "Nom", "Test à exécuter" et "Mots-clés" qui sont censées s'afficher dans l'écran d'accueil. configuration pour py.test dialogue. Il n'y a rien dans la boîte de dialogue qui permette de changer le cadre de test que j'ajoute.

J'utilise PyCharm 1.5.2 sur Windows avec Python 3.1.3 et pytest 2.0.3. Je peux exécuter avec succès py.test sur mes tests à partir de la ligne de commande, donc ce n'est pas quelque chose de simple comme pytest qui n'est pas installé correctement.

Comment configurer PyCharm pour qu'il exécute mes tests py.test ?

6voto

Charles Merriam Points 4498

Il est vrai qu'il est mal documenté. Une fois que vous aurez ajouté une nouvelle configuration à partir des valeurs par défaut, vous serez dans le domaine de l'exécution de "/Applications/PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py" script. Il n'est pas documenté et a ses propres idées d'arguments de ligne de commande.

Vous pouvez :

  1. Essayez de jouer, inversez le script, et voyez si vous pouvez d'une manière ou d'une autre faire en sorte que py.test accepte des arguments. Cela pourrait fonctionner ; cela n'a pas fonctionné dans la première demi-heure pour moi.
  2. Il suffit de lancer "py.test *.py" à partir d'une console.

Curieusement, vous aurez du mal à trouver une discussion, car JetBrains fait un bon travail de bombardement des algorithmes de Google avec ses propres pages.

3voto

jacobcan118 Points 610

J'ai trouvé ce fil de discussion lorsque j'ai posé la même question et que j'ai trouvé la solution pycharm version:2017.1.2 allez dans "Préférences" -> "Outils" -> "Outils intégrés Python" et définissez l'exécution de test par défaut à partir du panneau latéral droit comme py.test. résoudre mon problème

2voto

Brian C. Points 464

J'utilise la version 2018.2

Je fais Exécuter -> Modifier les configurations... Cliquez ensuite sur le + en haut à gauche de la boîte de dialogue modale. Sélectionnez "python tests" -> py.test Puis je lui donne un nom comme "All test with py.test"

Je sélectionne Cible : nom du module et je mets le module où se trouvent mes tests (c'est-à-dire "tests" pour moi) ou le module où se trouve tout mon code si mes tests sont mélangés à mon code. C'est ce qui m'a posé problème.

Je configure l'interpréteur Python.

J'ai défini le répertoire de travail comme étant le répertoire du projet.

1voto

Milo Chen Points 451

Activer Pytest pour votre projet

  1. Ouvrir le Paramètres/Préférences | Outils | Outils intégrés Python comme décrit dans la section Choix du framework de test.
  2. Dans le cadre de la Exécutant de test par défaut sélection du champ pytest .
  3. Cliquez sur OK pour enregistrer les paramètres.

enter image description here

1voto

Aviram Fireberger Points 1561

Ouvrez les préférences Windows (touche Commande + ", " sur Mac) :

Python preferences link

1.Outils

2.Outils intégrés Python

3. l'exécution des tests par défaut

python Default test runner

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X