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 :

test.py : ValueError: invalid literal for int()


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Consultant E-Business
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 29
    Points
    29
    Par défaut test.py : ValueError: invalid literal for int()
    Hello tout le monde.

    J'en vois déjà certains venir avec "encore un qui galère à caster des valeurs!", mais réjouissez-vous ça va plus loin qu'un "int('bah je veux un entier moi')".

    Je suis en phase de test de code que j'ai écrit pour faire des extractions de la base de donénes. Dans ces tests (classe SaintImportTest dans un fichier test.py), je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    self.campaign = Campaign(id_campaign='Test Campaign',
                             label='This a test for a campaign...')
     
    self.campaign.save()
    ce qui me donne cette magnifique erreur:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    ======================================================================
    ERROR: test_write_tab_files (cid.tests.SaintImportTest)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/devel/Bureau/cidmanager/cid/tests.py", line 47, in setUp
        self.campaign.save()
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/base.py", line 460, in save
        self.save_base(using=using, force_insert=force_insert, force_update=force_update)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/base.py", line 543, in save_base
        for f in meta.local_fields if not isinstance(f, AutoField)]
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 28, in inner
        return func(*args, **kwargs)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/related.py", line 876, in get_db_prep_save
        connection=connection)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 28, in inner
        return func(*args, **kwargs)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 28, in inner
        return func(*args, **kwargs)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 276, in get_db_prep_save
        return self.get_db_prep_value(value, connection=connection, prepared=False)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 53, in inner
        return func(*args, **kwargs)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/subclassing.py", line 53, in inner
        return func(*args, **kwargs)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 271, in get_db_prep_value
        value = self.get_prep_value(value)
      File "/usr/share/newsletter/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 479, in get_prep_value
        return int(value)
    ValueError: invalid literal for int() with base 10: 'admin'
    La classe Campaign étend une class Auditable qui contient entre autres les attributs suivants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    user_created = models.ForeignKey(User,verbose_name='created by',default=get_user('admin'),related_name='user_created')
    user_modified = models.ForeignKey(User,null=True,blank=True,verbose_name='modified by',related_name='user_modified')
    En supprimant les deux attributs ci-dessus d'où provient notre 'admin', j'évite le problème mais en production je ne pourrait pas les supprimer, donc au revoir les tests sur la prod...

    J'ai essayé de créé un admin user mais cela n'a rien changé au deal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    admin = User.objects.create_superuser('admin',
                                          'toto@titi.com',
                                          'admpwd')
     
    admin.save()
     
    client = Client()
    client.login(username='admin', password='admpwd')
    Est-ce que quelqu'un a une idée pour faire en sorte que cela fonctionne avec les attributs???

    D'avance merci!
    Quentin

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Bonjour,

    essaye de passer l'id de l'admin en valeur par défaut, quelque chose dans ce gout là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    default=User.objects.get(username="admin").id
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Nouveau membre du Club
    Profil pro
    Consultant E-Business
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 29
    Points
    29
    Par défaut
    En effet, ça fonctionne, merci!!

    Je vais voir si cette erreur n'est pas levée en prod, ce serait bizarre qu'elle ne se manifeste que dans les tests...

    Merci encore!
    Quentin

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

Discussions similaires

  1. [V8] ValueError: invalid literal for int() with base 10
    Par chagala dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 28/05/2015, 09h27
  2. erreur :invalid types ‘bool[int]’ for array subscript
    Par ferhat.adel dans le forum Débuter
    Réponses: 1
    Dernier message: 10/06/2013, 18h56
  3. [Débutant] invalid literal for int() with base 10: '\r'
    Par oodini dans le forum Général Python
    Réponses: 19
    Dernier message: 23/03/2011, 15h25
  4. invalid literal for int() with base 10:
    Par EricStib dans le forum Général Python
    Réponses: 9
    Dernier message: 05/01/2009, 13h22
  5. pb connexion : invalid password for user
    Par lolo16 dans le forum Administration
    Réponses: 8
    Dernier message: 04/08/2005, 13h11

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