52 votes

Nez incapable de trouver des tests à Ubuntu

Y a-t-il une raison pour laquelle Nose ne pourrait pas trouver de tests dans Ubuntu 9.04? J'utilise le nez 0.11.1 avec Python 2.5.4. Je peux exécuter des tests uniquement si je spécifie explicitement le nom du fichier. Si je ne spécifie pas le nom du fichier, il ne dit que 0 tests.

Le même projet fonctionne bien sur mon Mac, je suis donc perplexe.

105voto

David Wolever Points 34304

L'autre chose qui me procure toujours avec nose est qu'il n'exécutera pas de tests dans les fichiers exécutables. Je ne sais pas exactement pourquoi cela ferait une différence sur Mac / Ubuntu, mais cela en vaut la peine.

Assurez-vous que les scripts n'ont pas reçu chmod +x 'd sur le Mac… Et s'ils le faisaient, corrigez-les avec chmod -x $(find tests/ -name '*.py') .

62voto

Mark Rushakoff Points 97350

Ce comportement est presque certainement parce que vos fichiers ne sont pas nommés en conformité avec le nez du test de comportement correspondant. De la nez docs:

nez recueille automatiquement des tests de python source des fichiers, des répertoires et des paquets trouvés dans son répertoire de travail (qui par défaut est le répertoire de travail actuel). Toute source python de fichier, de répertoire ou de package qui correspond à la testMatch expression régulière (par défaut: (?:^|[b_.-])[Tt]hne) seront perçues comme un test (ou de la source pour la collecte des tests).

L'accent a été le mien.

Quelques exemples de noms susceptibles de correspondre à:

  • TestFoo.py
  • Foo-Test.py
  • Foo_Test.py
  • Foo.Test.py (à noter que celui-ci va essayer de les importer Foo, et déclenche une exception si on ne peut pas)

Un nom qui ressemble comme il aurait du match, mais ne fait pas:

  • FooTest.py

Si vous venez de renommer vos fichiers, vous devriez être bon d'aller.


Mise à jour

: Avez-vous lu cet article de blog? Je n'étais pas capable de dire des détails que vous avez posté, mais peut-être que votre test de répertoires sont absents de leur __init__.py fichiers?

... assurez-vous que vos "tests" répertoires sont en fait des modules (ils ont un vide __init__.py le fichier).

43voto

Rocky Points 187

J'ai eu le même problème. Mes tests se sont bien déroulés sous Windows, mais pas sous Ubuntu.

Dans Ubuntu, si vous exécutez:

 nosetests -vv --collect-only
 

Vous verrez probablement qu'il ignore votre fichier de test car il s'agit d'un exécutable: _Tools / LintControlFiles / test_HgLint.py est exécutable; sauté

Pour que le nez prenne en compte les exécutables, lancez-le comme ceci:

 nosetests --exe
 

17voto

Zahan M Points 446

Je peux confirmer que, comme @ david-wolever l'a dit, ils ne peuvent pas être exécutés sur Ubuntu. Courir

 nosetests -vv --collect-only 
 

pour voir tous les détails sur quels fichiers ont été examinés.

10voto

MITjanitor Points 161

- Ce lié, si vous êtes à l'exécution de tests hors d'un répertoire, j'.e

nosetests ... tests/

où les tests est le nom du dossier avec mes tests, et ont séparé python fonctions de test dans un de la .py modules... de Vos fonctions doivent commencer par 'test' pour nosetests de reconnaître que comme un test que vous souhaitez exécuter.

par exemple:

 def test_something():
    ...

nosetests va exécuter cette fonction lorsqu'elle est exécutée dans ce répertoire tout en

 def somethin_to_test():
    ...

serait pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X