J’ai un fichier appelé test_web.py contenant une classe TestWeb et de nombreuses méthodes nommées comme test_something ().
Je peux exécuter tous les tests de la classe comme suit:
$ nosetests test_web.py ... ====================================================================== FAIL: checkout test ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/me/path/here/test_web.py", line 187, in test_checkout ...
Mais je n’arrive pas à exécuter des tests individuels. Celles-ci me donnent des erreurs «pas de tel test» lorsqu’elles sont exécutées dans le même PWD:
$ nosetests test_web.py:test_checkout $ nosetests TestWeb:test_checkout
Qu’est-ce qui pourrait être faux ici?
Vous devez le spécifier ainsi: nosetests
, ou
nosetests test_web.py:TestWeb.test_checkout
Voir les docs
Vous pouvez également spécifier un module:
nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users
Spécifier des noms sur la ligne de commande comme les autres réponses suggèrent que cela fonctionne et est utile. Cependant, lorsque je suis en train d’écrire des tests, je trouve souvent que je veux juste exécuter le test sur lequel je travaille et que les noms que je devrais écrire sur la ligne de commande sont assez longs et difficiles à écrire. . Dans ce cas, je préfère utiliser un décorateur et un drapeau personnalisés.
Je définis wipd
(“work in progress decorator”) comme ceci:
from nose.plugins.atsortingb import attr def wipd(f): return attr('wip')(f)
Cela définit un décorateur @wipd
qui définira l’atsortingbut wip
sur les objects qu’il décore. Par exemple:
import unittest class Test(unittest.TestCase): @wipd def test_something(self): pass
Ensuite, -a wip
peut être utilisé sur la ligne de commande pour restreindre l’exécution du test à ceux marqués avec @wipd
.
J’utilise le nom @wipd
pour le décorateur plutôt que @wip
pour éviter ce genre de problème:
import unittest class Test(unittest.TestCase): from mymodule import wip @wip def test_something(self): pass def test_something_else(self): pass
L’ import
fera du décorateur wip
un membre de la classe et tous les tests de la classe seront sélectionnés. Le plugin atsortingb
vérifie la classe parente d’une méthode de test pour voir si l’atsortingbut sélectionné existe également, et les atsortingbuts créés et testés par atsortingb
n’existent pas dans un espace séparé. Donc si vous testez avec -a foo
et que votre classe contient foo = "platypus"
, alors tous les tests de la classe seront sélectionnés par le plugin.
Pour exécuter plusieurs tests spécifiques, vous pouvez simplement les append à la ligne de commande, séparés par un espace.
nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout
Dans mes tests, spécifier des tests avec des noms de module ne fonctionne pas
Vous devez spécifier le chemin réel vers le .py
:
nosetests /path/to/test/file.py:test_function
Ceci avec le nose==1.3.7