J'ai une application Pylons 1.0 avec un tas de tests dans le répertoire test / fonctionnel. J'obtiens des résultats de test étranges et je veux juste exécuter un seul test. La documentation du nez dit que je devrais être capable de passer un nom de test sur la ligne de commande mais j'obtiens ImportErrors quoi que je fasse
Par exemple:
nosetests -x -s sometestname
Donne:
Traceback (most recent call last):
File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/loader.py", line 371, in loadTestsFromName
module = resolve_name(addr.module)
File "/home/ben/.virtualenvs/tsq/lib/python2.6/site-packages/nose-0.11.4-py2.6.egg/nose/util.py", line 334, in resolve_name
module = __import__('.'.join(parts_copy))
ImportError: No module named sometestname
J'obtiens la même erreur pour
nosetests -x -s appname.tests.functional.testcontroller
Quelle est la syntaxe correcte?
appname.tests.functional.test_controller.name_of_test_method
.module.path:ClassNameInFile.method_name
, c'est-à-dire avec un signe deux-points séparant le chemin du module / fichier et les objets dans le fichier.module.path
est le chemin relatif du fichier (par exemplemy_tests.py:ClassNameInFile.method_name
), pas le chemin que vous utiliseriez dans uneimport
déclarationPour moi, en utilisant Nosetests 1.3.0, ces variantes fonctionnent (mais assurez-vous d'avoir
__init__.py
dans votre dossier de tests):Notez que deux-points simples entre le nom du module et le nom de la classe.
la source
Je dois ajouter l'extension de fichier ".py", c'est-à-dire
C'est peut-être parce que je n'ai aucune classe dans le fichier. Sans le
.py
, le nez se plaignait:Et cela bien que j'en ai un
__init__.py
dans le dossier/path_to/
.la source
J'ai écrit ce petit script, basé sur les réponses précédentes:
la source
Ce qui suit a très bien fonctionné pour moi:
Notez que mes tests n'étaient pas dans une classe. Les méthodes de test étaient dans un seul fichier.
la source