Creación de Fixtures - rmeruane/CC5402-TierraAdentro GitHub Wiki

En este tutorial se explica cómo crear los fixtures de manera rápida para hacer testing en Django. Los fixtures son datos ficticios que se utilizan en el entorno de test, de modo que los datos reales de la base de datos no se alteran al momento de hacer un test.

Un fixture es un documento JSON (http://es.wikipedia.org/wiki/JSON). Estos se agregan en la carpeta tierraadentro/fixtures.

Un modo rápido de crearlos es hacer un dump de los datos actuales de la base de datos. Para ello se utiliza el siguiente comando en un terminal, dando como parámetro el nombre del modelo que se quiere exportar a un fixture. Se puede pasar también como parámetro el nombre de la aplicación, de modo que se exporten todos los datos en un mismo fixture. Los siguientes ejemplos muestran cómo se hicieron los fixtures de las tablas de auth.User y de tierraadentro.Video

$ python manage.py dumpdata auth.User --indent=4 > tierraadentro/fixtures/auth_user.json
$ python manage.py dumpdata tierraadentro.Video --indent=4 > tierraadentro/fixtures/videos.json

El archivo JSON resultante para el fixture de auth.User, con un único usuario "diego" con password "diegodiego" es el siguiente:

[
    {
        "pk": 1,
        "model": "auth.user",
        "fields": {
            "username": "diego",
            "first_name": "",
            "last_name": "",
            "is_active": true,
            "is_superuser": true,
            "is_staff": true,
            "last_login": "2012-05-18T16:13:30.391Z",
            "groups": [],
            "user_permissions": [],
            "password": "pbkdf2_sha256$10000$YRihER7LPx5E$rTZpW+h5wGYFF9GJw50TDBSb9tSSDOplgNxBuuM8L4M=",
            "email": "[email protected]",
            "date_joined": "2012-05-18T16:13:30.391Z"
        }
    }
]

Se les puede agregar nuevos registros ficticios al fixture. En este ejemplo, agregamos al usuario "test", el cual tendrá el mismo password y tendrá los campos "is_staff" y "is_superuser" con valor false. Nótese que se cambió el valor de "pk" del segundo registro, ya que si fuera igual al del primero no se podría cargar el fixture en el ambiente de test.

[
    {
        "pk": 1,
        "model": "auth.user",
        "fields": {
            "username": "diego",
            "first_name": "",
            "last_name": "",
            "is_active": true,
            "is_superuser": true,
            "is_staff": true,
            "last_login": "2012-05-18T16:13:30.391Z",
            "groups": [],
            "user_permissions": [],
            "password": "pbkdf2_sha256$10000$YRihER7LPx5E$rTZpW+h5wGYFF9GJw50TDBSb9tSSDOplgNxBuuM8L4M=",
            "email": "[email protected]",
            "date_joined": "2012-05-18T16:13:30.391Z"
        }
    },
    {
        "pk": 2,
        "model": "auth.user",
        "fields": {
            "username": "test",
            "first_name": "",
            "last_name": "",
            "is_active": true,
            "is_superuser": false,
            "is_staff": false,
            "last_login": "2012-05-18T16:13:30.391Z",
            "groups": [],
            "user_permissions": [],
            "password": "pbkdf2_sha256$10000$YRihER7LPx5E$rTZpW+h5wGYFF9GJw50TDBSb9tSSDOplgNxBuuM8L4M=",
            "email": "[email protected]",
            "date_joined": "2012-05-18T16:13:30.391Z"
        }
    }
]