Django-fr

Forum

#1 08-06-2012 08:46:53

rgfors
Membre
Inscription : 06-04-2011
Messages : 6

Problème lors de l'exécution de mes unittests.

Bonjour,

Après avoir installé la version 1.4 de Django, tous mes tests qui passaient avec la version 1.3, ne passent plus.

Voici le message d'erreur que j'obtiens:

Problem installing fixture 'L:/_Perso_/Roberto/FORSbase-Devel\base\users\fixtures\initial_data.json': Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\core\management\commands\loaddata.py", line 196, in handle
    obj.save(using=using)
  File "C:\Python27\lib\site-packages\django\core\serializers\base.py", line 165, in save
    models.Model.save_base(self.object, using=using, raw=True)
  File "C:\Python27\lib\site-packages\django\db\models\base.py", line 529, in save_base
    rows = manager.using(using).filter(pk=pk_val)._update(values)
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 557, in _update
    return query.get_compiler(self.db).execute_sql(None)
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 986, in execute_sql
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 818, in execute_sql
    cursor.execute(sql, params)
  File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py", line 337, in execute
    return Database.Cursor.execute(self, query, params)
IntegrityError: Could not load auth.Permission(pk=4): columns content_type_id, codename are not unique

Est-ce que quelqu'un a eu le même problème?

Bonne journée et merci d'avance.

Hors ligne

#2 11-06-2012 10:02:58

rgfors
Membre
Inscription : 06-04-2011
Messages : 6

Re : Problème lors de l'exécution de mes unittests.

Mon initial_data.json contenait le script pour alimenter la table "auth_permission". J'ai l'impression que django crée automatiquement cette table et lorsqu'il essaie d'exécuter mon script il voit qu'il y a des doublons. En supprimant ce script ça fonctionne.

Hors ligne

#3 11-06-2012 12:35:16

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : Problème lors de l'exécution de mes unittests.

Salut,

Oui l'outil de tests de Django, créé une BDD temporaire juste pour y mettre
les données à utiliser pour tes tests, si il y a des fixtures disponibles ils
les utilisent donc pour remplir.

Pour les unittests, le mieux est de ranger à part tes fixtures Json/xml de
remplissage pour les tests et te faire un fichier de settings juste pour les
tests comme ceci :

    import os
    from settings import *
   
    FIXTURE_DIRS = (
        os.path.join(WEBAPP_ROOT, 'test_fixtures/'),
    )

Où tu renseignes dans "FIXTURE_DIRS" un ou des chemins vers des répertoires
contenant les fixtures que va utiliser l'outil de tests pour remplir la BDD.

Hors ligne

Pied de page des forums