Réponses:
Les méthodes ou classes de test individuelles peuvent toutes deux être désactivées à l'aide du unittest.skip
décorateur.
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Pour d'autres options, consultez la documentation relative à l' ignorance des tests et des échecs attendus .
@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.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
Production:
testFoo has been disabled
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
de test_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é.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
Il suffit de placer le @unittest.SkipTest
décorateur au-dessus du test.
unittest.skip
(sans raison) me donne une erreur en Python 2 mais pas en Python 3.
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.
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:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(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.
@unittest.SkipTest
fonctionne et non@unittest.skip