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 ?

288voto

yole Points 3628

Veuillez vous rendre sur le site File Settings Tools Python Integrated Tools et changez le programme de test par défaut en py.test. Vous aurez alors l'option py.test pour créer des tests au lieu de l'option unittest.

70voto

Sergey Kubrak Points 593

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools - Choisir py.test comme Default test runner .
  2. Si vous utilisez Django Preference -> Languages&Frameworks -> Django - Régler le tic-tac sur Do not use Django Test runner
  3. Effacer toutes les configurations de test existantes de Run/Debug configuration sinon les tests seront exécutés avec ces anciennes configurations.
  4. Pour définir des arguments supplémentaires par défaut, mettez à jour la configuration par défaut de py.test. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

21voto

Scott Griffiths Points 8867

Je pense que vous devez utiliser l'élément Run/Debug Configuration de la barre d'outils. Cliquez dessus et "Editer les configurations" (ou utilisez l'élément de menu Exécuter->Editer les configurations). Dans la section 'Defaults' dans le panneau de gauche, il y a un élément 'py.test' qui, je pense, est ce que vous voulez.

J'ai également constaté que le manuel ne correspondait pas à l'interface utilisateur. J'espère que j'ai bien compris le problème et que cela m'a aidé.

19voto

pinouchon Points 7706

Voici comment je l'ai fait fonctionner avec pytest 3.7.2 (installé via pip) et pycharms 2017.3 :

  1. Aller à edit configurations

  1. Ajoutez une nouvelle configuration d'exécution et sélectionnez py.test

  1. Dans les détails de la configuration de l'exécution, vous devez définir target = python et le champ sans nom situé en dessous à tests . Il semble que ce soit le nom de votre dossier de test. Je ne suis pas sûr que ce soit le cas. Je recommande également l'utilisation de l'option -s afin que si vous déboguez vos tests, la console se comporte correctement. Sans l'argument, pytest capture la sortie et rend la console de debug buggée.

  1. Mon dossier de tests ressemble à cela. Il se trouve juste en dessous de la racine de mon projet ( my_project/tests ).

  1. Mon foobar_test.py fichier : (aucune importation n'est nécessaire) :

    def test_foobar(): print("hello pytest") assert True

  2. Exécutez le programme avec la commande run normale

13voto

cgebbe Points 81

Dans pycharm 2019.2, vous pouvez simplement faire ceci pour exécuter tous les tests :

  1. Exécuter > Modifier les configurations > Ajouter pytest
  2. Définir les options comme indiqué dans la capture d'écran suivante screenshot of configuration
  3. Cliquez sur Debug (ou lancez pytest en utilisant par exemple les touches de raccourci Shift+Alt+F9)

Pour une meilleure intégration de pytest dans pycharm, voir https://www.jetbrains.com/help/pycharm/pytest.html

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