Comment les tests unitaires individuels peuvent-ils être temporairement désactivés lors de l'utilisation du unittest
module en Python?
python
python-unittest
coelhudo
la source
la source
@unittest.SkipTest
fonctionne et non@unittest.skip
@unittest.skip
fonctionne également très bien.@unittest.skip
ne fonctionne pas.Vous pouvez utiliser des décorateurs pour désactiver le test qui peut encapsuler la fonction et empêcher le test unitaire googletest ou python d'exécuter le cas de test.
Production:
la source
La dernière version (2.7 - non publiée) prend en charge le saut / la désactivation des tests comme ça . Vous pouvez simplement obtenir ce module et l'utiliser sur votre installation Python existante. Cela fonctionnera probablement.
Avant cela, je renommer les tests que je voulais ACCEDE
xtest_testname
detest_testname
.Voici un script elisp rapide pour ce faire. Mon elisp est un peu rouillé, alors je m'excuse à l'avance pour les problèmes qu'il a. Non testé.
la source
Il suffit de placer le
@unittest.SkipTest
décorateur au-dessus du test.la source
unittest.skip
(sans raison) me donne une erreur en Python 2 mais pas en Python 3.Je viens de renommer une méthode de cas de test avec un trait de soulignement: test_myfunc devient _test_myfunc.
la source
La documentation pour 2.1 ne spécifie pas de méthode ignore ou skip.
Cependant, je bloque généralement les commentaires en cas de besoin.
la source
En se concentrant sur la partie «temporairement désactivée» de la question, la meilleure réponse dépend quelque peu du cas d'utilisation. Le cas d'utilisation qui m'a amené ici est que je fais du développement piloté par les tests sur une fonction. Dans ce processus, j'écris successivement des tests et j'utilise souvent des points d'arrêt dans la fonction de débogage. Si je ne fais que lancer tous les tests à chaque fois que j'exécute le testeur, je finis par m'arrêter aux points d'arrêt pour les tests qui fonctionnent déjà. Ajouter "sauter" ou modifier le nom du test ou quelque chose comme ça n'est pas ce que je veux parce que quand j'ai fini d'écrire la fonction, je veux que tous les tests s'exécutent. Si j'utilisais "skip", je devrais revenir en arrière et "unskip".
Pour mon cas d'utilisation, la solution réside dans le lanceur de test, pas dans le code de test. J'utilise pytest . Avec pytest, il est facile de spécifier un seul test depuis la ligne de commande:
(remplacez les majuscules par vos valeurs).
Je comprends que cette question concernait python-unitest. Je n'ai pas utilisé cela depuis longtemps. Je ne serais pas surpris s'il avait quelque chose de similaire à pytest. Sinon, vous pouvez facilement passer au pytest. Vous n'avez pas besoin de modifier votre code. Installez-le simplement et modifiez votre commande de test runner.
J'utilise également PyCharm Pro. Sur la page qui affiche mon code de test, il y a une petite icône à côté de la def pour chaque test. Je peux cliquer sur cette icône et exécuter ce test individuellement.
la source