IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Erreur tres bizarre dans un test unitaire


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut Erreur tres bizarre dans un test unitaire
    Bonjour, voila deux jours que je rencontre ce problème très étrange, j’espère que vous pourrez venir a mon secours. Et je vous en remercie par avance.

    J'ai une fonction de test qui charge des pages :

    test.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ....
    c = TestClient()
    c.login_user(self.user)
    r = c.get(reverse('extremite_afficher'))
    ....
    r = c.get(reverse("extremite_modifier", args=[self.see_ext.id]))
    ....
    r = c.get(reverse("extremite_supprimer", args=[self.see_ext.id]))
    ....
    url.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    urlpatterns = patterns('',
    url(r'^extremites/$', 'afficher', name="extremite_afficher"),
    url(r'^extremites/ajouter/$', 'ajouter', name="extremite_ajouter"),
    url(r'^extremites/(?P<extremite_id>\d+)/modifier/$', 'modifier', name="extremite_modifier"),
    url(r'^extremites/(?P<extremite_id>\d+)/supprimer/$', 'supprimer', name="extremite_supprime"))
    Et le problème apparaît lorsque je lance le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ERROR: test_droits_extremite (voirie.tests.Test)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/..../tests.py", line 9, in test_droits_extremite
        r = c.get(reverse("extremite_supprimer", args=[self.see_ext.id]))
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/test/client.py", line 298, in get
        response = self.request(**r)
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/test/client.py", line 238, in request
        response = self.handler(environ)
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/test/client.py", line 79, in __call__
        response = self.get_response(request)
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/core/handlers/base.py", line 141, in get_response
        return self.handle_uncaught_exception(request, resolver, sys.exc_info())
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/core/handlers/base.py", line 180, in handle_uncaught_exception
        return callback(request, **param_dict)
    TypeError: 'str' object is not callable
    Déjà, impossible de résoudre ce problème, par contre j'ai constaté un fait étrange, si je modifie le nom de "extremite_supprimer" en "extremite_supprime" par exemple, j’obtiens alors le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Traceback (most recent call last):
      File "/home/....../tests.py", line 5, in test_droits_extremite
        r = c.get(reverse('extremite_afficher'))
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/test/client.py", line 298, in get
        response = self.request(**r)
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/test/client.py", line 238, in request
        response = self.handler(environ)
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/test/client.py", line 79, in __call__
        response = self.get_response(request)
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/core/handlers/base.py", line 141, in get_response
        return self.handle_uncaught_exception(request, resolver, sys.exc_info())
      File "/usr/local/lib/python2.6/django1.2.3/lib/python2.6/dist-packages/django/core/handlers/base.py", line 180, in handle_uncaught_exception
        return callback(request, **param_dict)
    TypeError: 'str' object is not callable
    Savez vous d’où pourrait venir mon problème ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Considérant que le message d'erreur se rapporte à la dernière ligne de code, même si elle n'en est pas la cause originale, on est tenté de croire que tu as utilisé le nom callback comme variable pour une string.

    Commençons par là, non ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Merci pour ta reponse !

    En fait, l'erreur ne porte pas sur la derniere ligne, j'ai du code derriere (d'ou les '.....')

    Ceci dit, je n'ai pas de variable appelée callback.

    Cette erreur me rend fou.....

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    ça y est !!!!!!!!!!!!!!

    Mon problème est résolue :

    ce message incompréhensible signifiait en fait : "il y a une erreur dans la vue que tu appelles"

    Et cette erreur, je ne l'avait pas vue parce que elle ne se présentait que dans le cas d'un utilisateur non admin (et comme je suis un imbécile, je n'avait pas testé la fonction supprimer en utilisateur restreint...).

    Si par hasard quelqu'un tombe sur cette page avec un message similairement incompréhensible : Pensez a essayer avec une versions plus récente de django, le message d'erreur s’avère différend.

    Merci encore a VinsS de m'avoir repondu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] validateur dans un test unitaire
    Par Ontolingua dans le forum Symfony
    Réponses: 7
    Dernier message: 08/10/2010, 09h45
  2. [EasyMock] utilisation des mock dans les test unitaires.
    Par jeremieG dans le forum Tests et Performance
    Réponses: 7
    Dernier message: 16/07/2010, 17h10
  3. [XP] est-ce que "if" peut apparaitre dans un test unitaire?
    Par wl1979 dans le forum Méthodes Agiles
    Réponses: 3
    Dernier message: 14/08/2009, 19h59
  4. Calcul de la profondeur dans les tests unitaires
    Par alex.nd4 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 26/02/2009, 16h08
  5. [JDBC] Erreur très bizarre dans ExecuteQuery
    Par boudou dans le forum JDBC
    Réponses: 6
    Dernier message: 17/03/2006, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo