Comment je fais les tests avec PyCharm?

dans L'IDE de PyCharm, si je clique droit sur une fonction / méthode avec un doctest, parfois le menu de clic droit me donnera l'option:"Exécuter 'Doctest my_function_name'" et parfois le menu de clic droit, à la place, donne seulement l'option d'exécuter le dossier entier (pas comme un doctest).

Qu'est-ce qui détermine quand il donnera l'option "Exécuter doctest" et quand il ne le fera pas? Est-il un moyen de le forcer dans un sens ou l'autre?

21
demandé sur Troy 2015-03-24 22:04:48

2 réponses

l'Exécution d'un module (ou tests)PyCharm est fait via un Exécuter Configuration. Lorsque vous faites un clic droit sur un module,PyCharm recherche d'unRun Configuration pour ce module. Si une configuration est trouvée (ceci peut être dû à une exécution précédente, ou à une création manuelle d'un Configuration),PyCharm suggère seulement d'exécuter cette configuration.

Par exemple, si une configuration de module.py a été créé pour gérer ses doctests, c'est l'option que nous verrons quand un clic droit module.py. Toutefois, si aucune configuration n'est trouvé, PyCharm suggère d'exécuter le module de différentes options, selon le code dans le module (exécuter régulièrement, ou run doctests/unittests). Une fois qu'une option est choisie, PyCharm crée respectifs, temporaire, Run Configuration, implicitement. À partir de là, en cliquant avec le bouton droit de la souris sur le module, vous n'obtiendrez que la configuration qui a été créée pour ce module.

Important note de côté: PyCharm économise jusqu'à 6 temporaire (c'est à dire, Configurations qui ont été créés par l'exécution d'un module) Run Configurations - 3 dans "Python", i.e., scripts, et 3 dans"Python Tests". Cela signifie que si vous exécutez moduleA.py,moduleB.py,moduleC.py et moduleD.py, le temporaire Configurations dans PyCharm sera moduleB.py,moduleC.py et moduleD.py. La configuration de moduleA.py sera automatiquement supprimée, sauf s'il est explicitement enregistré.

ce comportement peut être reproduit comme suit:

  1. PyCharm, créer un nouveau module Python: "temp"

2.Ajouter ce qui suit au module:

"""
    >>> print 3.14
    3.14
"""

if __name__ == '__main__':
    pass
  1. clic droit sur la section doctest donne l'option " Run 'Doctests in temp'"
  2. clic droit sur le main section donne l'option "Exécuter 'temp' "
  3. choisir l'une des options, fait disparaître l'autre option lors des éditions suivantes. E. g., le choix d' exécuter le module fera l'option exécuter Doctests disparaissent dans les passages suivants, et vice versa. Revenir à la première étape, où il était possible de choisir entre les deux options, est possible en supprimant la "configuration D'exécution"du module:

exécuter -- > modifier la configuration -- > localiser la configuration actuelle du module (habituellement en surbrillance) --> cliquer sur le bouton "Moins" (coin supérieur gauche) --> cliquer sur "Appliquer" --> cliquer sur OK. Maintenant, nous sommes de retour à l'étape 3.

(Reproduit dans l' PyCharm 5.0 et 4.5)

Pour résumer:

  • si non Run Configuration est trouvé, PyCharm suggère d'exécuter le module de la meilleure manière possible (comme un script, doctests, ou unittests)
  • Si Run Configuration est trouvé, PyCharm suggère seulement que Configuration.
  • si PyCharm ne vous donne pas l'option run que vous voulez, trouvez le Run Configuration qui l'empêche de vous donner l'option, et supprimer, ou en créer un nouveau qui va exécuter le fichier, ou méthode/fonction, la façon dont vous le souhaitez.
11
répondu asherbar 2015-12-03 20:46:18

si vous ne voulez pas supprimer des configurations, vous pouvez aussi appuyer sur la touche raccourci pour lancer | reprendre le programme (F9 pour moi) pour faire apparaître une liste complète de choix

5
répondu dugloon 2016-07-22 14:01:35