Le nez dans l'impossibilité de trouver des tests sous ubuntu
Est-il une raison Nez ne serait pas en mesure de trouver des tests sous Ubuntu 9.04?
Je suis en utilisant nez 0.11.1 avec python 2.5.4.
Je peux exécuter des tests que si je spécifier explicitement le nom de fichier.
Si je n'ai pas de spécifier le nom de fichier il dit seulement, 0 tests.
Le même projet exécute les tests très bien sur mon Mac, donc je suis assez perplexe!
- Exactement ce commandement êtes-vous d'entrer lorsque vous vous y attendez tests à exécuter?
- "nosetests --with-gae" ou tout simplement "nosetests". J'ai aussi essayé de "nosetests tests", où les "tests" est le nom de mon fichier de test répertoire. Toutes les commandes fonctionnent parfaitement sur le Mac, pas de nez configs ont été changé sur la machine. Je travaille sous ubuntu si je importer les fichiers de test dans le init.py le répertoire tests et les exécuter "nosetests tests". Ce n'est pas durable, mais.
- Essayez d'exécuter
nosetests
avec un peu de-v
s '...-vv
a habituellement m'a donné suffisamment d'informations pour résoudre mes problèmes. - Pourriez-vous nous montrer un peu de la structure de répertoire? À partir du répertoire où vous exécutez la commande, ce sont les sous-dossiers, et dans lequel les dir sont les épreuves? Le test dir ont sous init sous sous .py-t-il? La liste de certains des fichiers que vous vous attendez à être exécuté dans le répertoire test.
- Je ne peux pas vous donner accès à des pensions de titres, les tests de résider dans un "tests" de répertoire, et il a un vide init.py. Si je importer chaque fichier de test dans le init.py and run " nosetests des tests, tout fonctionne sur ubuntu. Mais je ne peux pas continuer à mettre à jour init.py chaque fois que j'ajoute un nouveau test. Je me demandais pourquoi le nez se comporte différemment sur Mac et Ubuntu.
Vous devez vous connecter pour publier un commentaire.
- Ce lié, si vous êtes à l'exécution de tests hors d'un répertoire, j'.e
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:
nosetests va exécuter cette fonction lorsqu'elle est exécutée dans ce répertoire tout en
ne serait pas.
L'autre chose qui toujours me met avec
nose
est de ne pas exécuter les tests dans les fichiers exécutables. Je ne suis pas exactement sûr, pourquoi ce serait de faire une différence, que ce soit sur Mac/Ubuntu, mais ça vaut le coup.Assurez-vous que les scripts ne pas obtenir en quelque sorte
chmod +x
'd sur le Mac... Et s'ils le faisaient, les fixer avecchmod -x $(find tests/-name '*.py')
.nose
enfin pistes de tous mes tests sans avoir à les nommer un par un sur la ligne de commande.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 le nez docs:
L'accent a été le mien.
Quelques exemples de noms susceptibles de match:
Un nom qui semble comme il l'aurait fait de match, mais ne fait pas:
Si vous venez de renommer vos fichiers, vous devriez être bon d'aller.
Mise à jour: je n'étais pas capable de dire des détails que vous avez posté, mais peut-être que votre test de répertoires sont portées disparues à leurs
__init__.py
fichiers?J'ai eu le même problème. Mes tests ont couru très bien dans Windows, mais pas sous Ubuntu.
Dans Ubuntu, si vous exécutez:
Vous verrez probablement que c'est de sauter de votre fichier de test parce que c'est un exécutable:
_Tools/LintControlFiles/test_HgLint.py est exécutable; sauté
Afin d'obtenir nez à considérer les exécutables, exécutez-le comme ceci:
Je peux confirmer que, comme @david-wolever dit, ils ne peut pas être exécutable sur Ubuntu.
Exécuter
pour voir tous les détails sur les fichiers qui ont été examinés.
Utiliser le
-all-modules
et il va trouver tous les tests.nosetests --all-modules ./tests
Après en regardant à travers la source de nez, plus précisément le selector.py fichier, si vous regardez ce qui se passe,
https://github.com/nose-devs/nose/blob/master/nose/selector.py#L129
Lors de la vérification si nous
wantFile
,self.matches
est appelée, ce qui fait ensuite unregex
de recherche contre lematch
, qui est ce que vous avez passées en tant quetestMatch
.Le problème se produit lorsque vous vérifiez ensuite plus tard vers le bas (et, tout au long de ce fichier),
https://github.com/nose-devs/nose/blob/master/nose/selector.py#L152
Il exécute le même type d'vérifie une fois encore, contre
wantFunction
.Cela signifie, si vous avez une structure différente de votre colis, votre conteneur pyfile, et de votre classe de test /fonction, vous devez créer un fou compliqué regex pour correspondre à chaque étape.
Pour moi, quand j'ai appris cela, j'ai choisi de faire précéder mon colis, les conteneurs et les fonctions de test avec un bout, c'est à dire
setests
├── __init__.py
├── setest_area1.py
└──── def setest_someblock(): ...
Et puis mon
nose
de commande fonctionne comme,nose --testMatch="setest"
Ce filtre ensuite la façon dont je espérer qu'il fonctionne.