10
votes

Pourquoi Django ne voit pas mes tests?

J'ai créé le module test.py, rempli de xxx

et placé dans le dossier avec mon application. Lorsque j'exécute des tests par xxx

après la création de la base de données de test, je reçois une réponse "RAN 0 tests dans 0.000S"

Qu'est-ce que je fais mal?

ps Voici ma hiérarchie de projet: xxx

i renommé test.py to test.py. Eclipse a obtenu que ce module est avec des tests, mais la réponse est toujours "RAN 0 tests en 0.000S"


0 commentaires

7 Réponses :


5
votes

Vous devez le nommer tests.py .


1 commentaires

J'ai renommé Test.py à tests.py. Eclipse a obtenu que ce module est avec des tests, mais la réponse est toujours "RAN 0 tests dans 0.000S"



3
votes

Il n'y a pas tout à fait raison si vous obtenez le même résultat après avoir renommé le fichier sur tests.py code>. Comment exécutez-vous les tests? Est-ce que vous le faites de la ligne de commande ou avez-vous configuré une cible d'exécution personnalisée à l'aide de Eclipse? S'il vous plaît essayez-le à partir de la ligne de commande si vous ne l'avez pas déjà fait.

Déjà également sur Django Shell ( Python Manage.py shell code>) et importe votre module de tests. P>

from MyProj.forum.tests import SimpleTest


5 commentaires

J'ai essayé "python gérer.py shell" et "de myProj.forum.test importation test_forum" (j'ai renommé la classe de test), et cela n'a pas fonctionné. Mais "Importer myProj.forum.Test" et "à partir de myProj.forum.Tests importatent *" passés sans erreurs.


On dirait que quelque chose est mal. Essayez ceci: de myProj.forum Tests d'importation suivi de dir (tests) . Voyez si votre nom de classe est présent dans la sortie de la commande dir .


Comme on pouvait s'attendre: >>> dir (tests) [' Construits ', ' DOC ', fichier ',' Nom ',' Package ',' Chemin '] donc, il n'y a pas de classe de test dans tests.py. Qu'est-ce que j'ai manqué?


Ceci est intéressant: il n'y a pas de test_forum dans cette liste. Il me semble que vous avez un répertoire nommé tests là-bas. Cela expliquerait pourquoi à partir de myProj.forum.Test importation test_forum échoue mais importer myProj.forum.Test réussit. Pouvez-vous vérifier si c'est le cas?


Oui, tu avais raison. J'ai essayé de tester mon application avec le nez et l'urllib / urllib2 en premier, et à cette fin, j'ai créé des tests de package. J'ai supprimé ce paquet et l'outil de test Django a obtenu ma classe de test dans TESTS.PY. Merci, manoj govindan. Tu m'as sauvé !



6
votes

Essayez de renommer votre méthode Test à quelque chose comme test_content .

Je pense que le coureur de test exécutera toutes les méthodes nommées test _ * (voir les documents Python pour Code de test d'organisation . Django's TESTCASE est une sous-classe de Unitest.ESCASE , de même que les mêmes règles doivent être appliquées .


2 commentaires

J'ai renommé ma classe de test à Test_forum. Mais ça n'a pas aidé


Ne renommez pas la classe, renommez la méthode. C'est peut-être sensible à la casse alors essayez Test_forum.



39
votes

Vous devrez utiliser le préfixe Test _ pour chaque méthode de test.


1 commentaires

Moi aussi, sur Django 1.4. THX!



15
votes

Résumé:

0) Essayez d'exécuter uniquement pour votre application: P>

def test_something(self):
    self.assertEquals(1, 2)


2 commentaires

En plus de 4, n'oubliez pas de supprimer le dossier pycache __


Mon problème était 2. Merci.



3
votes

J'avais essayé toutes ces choses, mais j'ai négligé d'ajouter le fichier __init__.py dans le répertoire des tests que j'ai créé pour contenir tous mes tests et Django ne pouvait pas le trouver.


0 commentaires

3
votes

Après un certain temps consacré à la recherche, je n'ai trouvé personne suggérant cela, je vais donc la partager comme une réponse tardive. Dans mon cas, j'ai mon manage.py code> dans le répertoire racine, par exemple xxx pré>

donc j'ai trouvé que La commande de test a la possibilité de fournir un projet qui teste" à exécuter. Dans mon cas, je devais faire cela P>

python project_name/manage.py test ./project_name/


0 commentaires