Je veux commencer à écrire des tests unitaires pour mon code Python, et le framework py.test semble être un meilleur pari que unittest fourni par Python . J'ai donc ajouté un répertoire "tests" à mon projet, et y ai ajouté test_sample.py . Maintenant, je veux configurer PyCharm pour exécuter tous les tests dans mon répertoire "tests".
PyCharm prendrait en charge py.test dans son lanceur de tests. Vous êtes censé être en mesure de créer une configuration d'exécution / débogage pour exécuter vos tests, et PyCharm aurait une boîte de dialogue "Créer une configuration" spécifiquement pour py.test . Mais c'est 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 sur le répertoire dans la fenêtre de l'outil Projet, je suis censé 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, peut-être que la documentation est tout simplement fausse, et "Create Run Configuration" semble prometteur. Malheureusement, les deux seuls éléments de son sous-menu sont "Unittests in C: \ mypath ..." et "Doctests in C: \ mypath ...", dont aucun ne s'applique - 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 clique avec le bouton droit dans la fenêtre de l'éditeur, j'obtiens les éléments de menu promis "Créer <nom>": il y a "Créer 'Unittests in test_sa ...'...", suivi de "Exécuter 'Unittests in test_sa ...' "et" Debug 'Unittests in test_sa ...' ". Encore une fois, tout est spécifique au cadre unittest; rien pour py.test.
Si j'essaye les éléments de menu qui disent "unittest", j'obtiens une boîte de dialogue avec des options pour "Nom", "Type", une zone de groupe "Tests" avec "Dossier" et "Modèle" et "Script" et "Classe "et" Fonction ", etc. Cela ressemble exactement à ce qui est documenté comme la boîte de dialogue pour ajouter une configuration pour Python Unit Test , et pas comme les options" Nom "et" Tester à exécuter "et" Mots clés "qui sont censées apparaître dans la configuration de la boîte de dialogue py.test . Il n'y a rien dans la boîte de dialogue pour 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
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 exécuter mes tests py.test?
File | Settings | Tools | Python Integrated Tools
ne soit disponible que dans les paramètres du projet plutôt que dans les paramètres par défaut de PyCharm 5.PyCharm 2017.3
Preference -> Tools -> Python integrated Tools
- Choisissezpy.test
commeDefault test runner
.Preference -> Languages&Frameworks -> Django
- Activez la case à cocherDo not use Django Test runner
Run/Debug configuration
, sinon les tests seront exécutés avec ces anciennes configurations.Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
la source
New => Python File
, laKind:
liste déroulante propose uniquement: fichier Python, test unitaire, stub Python, pas Pytest. J'ai regardé dans tous les endroits mentionnés dans les fils ci-dessus. Qu'est-ce que je rate?Je pense que vous devez utiliser l'élément de configuration Exécuter / Déboguer dans la barre d'outils. Cliquez dessus et «Modifier les configurations» (ou utilisez également l'élément de menu Exécuter-> Modifier les configurations). Dans la section «Defaults» du volet 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 pour cela. J'espère que j'ai bien compris le problème et que cela aide.
la source
Target
d'êtreScript ath
et de la pointer vers la racine de mon dossier de testsVoici comment je l'ai fait fonctionner avec pytest
3.7.2
(installé via pip) et pycharms2017.3
:edit configurations
py.test
target
=python
et le champ sans nom ci-dessous surtests
. Il semble que ce soit le nom de votre dossier de test. Pas trop sûr de dur. Je recommande également l'-s
argument pour que si vous déboguez vos tests, la console se comporte correctement. Sans l'argument, pytest capture la sortie et rend la console de débogage boguée.my_project/tests
).foobar_test.py
fichier: (aucune importation nécessaire):la source
C'est mal documenté pour être sûr. Une fois que vous avez ajouté une nouvelle configuration à partir des valeurs par défaut, vous serez dans le domaine de l'exécution du script "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py". Il n'est pas documenté et a ses propres idées d'arguments de ligne de commande.
Vous pouvez:
Curieusement, vous aurez du mal à trouver une discussion car JetBrains fait un bon travail de bombardement des algorithmes de Google avec ses propres pages.
la source
trouver ce fil lorsque j'ai rencontré la même question et trouvé la solution pycharm version: 2017.1.2 allez dans "Préférences" -> "Outils" -> "Python Integrated Tools" et définissez le testeur par défaut du panneau de droite comme py.test résoudre mon problème
la source
Dans pycharm 2019.2, vous pouvez simplement faire ceci pour exécuter tous les tests:
Pour une meilleure intégration de pytest dans pycharm, voir https://www.jetbrains.com/help/pycharm/pytest.html
la source
J'utilise 2018.2
Je fais exécuter -> Modifier les configurations ... Puis cliquez sur le + en haut à gauche de la boîte de dialogue modale. Sélectionnez "tests python" -> py.test Puis je lui donne un nom comme "Tous les tests avec py.test"
Je sélectionne Target: nom du module et mets dans le module où sont mes tests (c'est-à-dire «tests» pour moi) ou le module où se trouve tout mon code si mes tests sont mélangés avec mon code. Cela me faisait trébucher.
J'ai défini l'interpréteur Python.
J'ai défini le répertoire de travail sur le répertoire du projet.
la source
Avec une configuration spéciale de Python Conda qui comprenait l'installation de pip pour py.test plus l'utilisation de l'addin Specs (option --spec) (pour Rspec comme un joli langage de résumé de test), je devais faire;
1.Modifiez le py.test par défaut pour inclure option = --spec, ce qui signifie utiliser le plugin: https://github.com/pchomik/pytest-spec
Créez une nouvelle configuration de test à l'aide de py.test. Changez son interpréteur python pour utiliser ~ / anaconda / envs / votre choix d'interprètes, par exemple py27 pour mes noms.
3.Supprimez la configuration de test 'unittests'.
4.Maintenant, la configuration de test par défaut est py.test avec mes jolies sorties de style Rspec. J'aime cela! Merci tout le monde!
La documentation de ps Jetbrains sur les configurations d'exécution / débogage est ici: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test
la source
Avec 2018.3, il semble détecter automatiquement que j'utilise pytest, ce qui est bien, mais cela ne permet toujours pas de courir à partir du niveau supérieur du projet. J'ai dû courir
pytest
pour chaquetests
répertoire individuellement.Cependant, j'ai trouvé que je pouvais choisir l'une des configurations et la modifier manuellement pour qu'elle s'exécute à la racine du projet et que cela fonctionnait. Je dois le choisir manuellement dans la liste déroulante Configurations - je ne peux pas faire un clic droit sur le dossier racine dans le volet Projet. Mais au moins, cela me permet d'exécuter tous les tests en même temps.
la source
Activez Pytest pour votre projet
la source