Generar Data de Prueba en Django 6 o en Python con Faker
Faker es un paquete de Python que genera datos falsos para nuestra aplicación; es decir, en vez de generar datos de prueba de manera manual que usualmente son necesarios al momento de desarrollar cualquier aplicación, podemos emplear una librería que nos facilita el proceso por nosotros.
Empleando los fakers tenemos una forma sencilla de agregar datos de prueba a la base de datos. Es especialmente útil durante el desarrollo en el que necesitas llenar la base de datos con datos de muestra y en vez de generarlos de manera manual, se generan automáticamente mediante el framework; en definitiva, es el mecanismo que tenemos para generar esos datos de prueba que siempre necesitamos al inicio de la aplicación.
🎯 ¿Por Qué Generar Datos de Prueba?
Necesitamos datos de prueba por varias razones:
- Pruebas de IU y Funcionalidad: Para validar interfaces (ej. paginación) o lógica de negocio sin tener que crear manualmente 30 o 40 registros.
- Pruebas de Integración/Unitarias: Es crucial contar con datos controlados y predecibles para asegurar que las pruebas arrojen resultados consistentes.
- Modelos Complejos: Si tienes modelos con muchos campos (ej. un Post con título, contenido, fecha, etc.), la generación automática ahorra una gran cantidad de tiempo.
Instalamos el paquete en nuestro proyecto con:
$ pip install FakerActualización de requirements.txt
Después de instalar cualquier paquete, es crucial actualizar el archivo requirements.txt para asegurar que el ambiente de desarrollo de cualquier otro colaborador o el ambiente de producción sea reproducible.
$ pip freeze > requirements.txtGenerar datos de prueba
Existen muchas formas de generar datos de pruebas, podemos generar números aleatorios, nombres, nombres completos, direcciones, textos, etc; veamos algunos.
Para este apartado, se recomienda al lector que emplee Django Shell:
$ python manage.py shellCreamos la instancia de Faker, lo cual permitirá crear la data de prueba:
from faker import Faker
fake = Faker()Si queremos generar un nombre:
fake.first_name()Un nombre único:
fake.unique.first_name()Nombre y apellido:
fake.name()Dirección:
fake.address()Un texto:
fake.text()fake.paragraph(nb_sentences=1)Cambiar el idioma:
from faker import Faker
fake = Faker(['it_IT', 'en_US', 'ja_JP'])
for _ in range(10):
print(fake.name())Número aleatorio en un rango:
fake.random_int(1000, 2000)Una IP:
fake.ipv4_private()Estás son solamente algunas de las opciones que tenemos al momento de emplear el paquete de Faker, para más información consulta la documentación oficial:
https://faker.readthedocs.io/en/master/
Script para generar datos de prueba
Nuestro caso de interés es el de generar datos de para la aplicación, específicamente algunos comentarios que es lo que hemos venido implementando en esta sección.
Para generar estos datos de prueba tenemos muchas formas, podríamos generar datos escribiendo los script directamente en Django Shell, pero, para hacerlo más interesante vamos a generar un archivo auxiliar; Django no cuenta con algún comando o archivo predefinido para generar datos de prueba como si los tienen en el caso de Laravel o CodeIgniter 4 mediante los seeders, así que, debemos de generar el archivo que llamaremos como:
testcourse/create_comments.py
Y tendrá el siguiente contenido:
mystore/create_comments.py
from faker import Faker
def main():
fake = Faker()
for _ in range(5):
comment = Comment.objects.create(
text = fake.text()
)
comments = Comment.objects.all()
print(f"Comments in DB {comments.count()}")
if __name__ == '__main__':
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE','mystore.settings')
aplication = get_wsgi_application()
from comments.models import Comment
main()En el script anterior, importamos el servidor de desarrollo de tipo WSGI:
from django.core.wsgi import get_wsgi_application
Además de crear una variable de entorno llamada DJANGO_SETTINGS_MODULE que es necesaria por el script para que pueda emplear el entorno de desarrollo:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mystore.settings")El siguientes paso es crear la aplicación para poder iniciar Django con el servidor de tipo WSGI; empleamos el servidor WSGI importado antes:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()Con los pasos anteriores, ya es posible utilizar los distintos recursos de la aplicación, como los modelos, que incluye, poder importar los mismos:
if __name__ == '__main__':
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE','mystore.settings')
aplication = get_wsgi_application()
from comments.models import CommentYa que, para emplear este tipo de recursos directamente en un script de Python que no se va a ejecutar como parte de un proyecto en Django si no, como un archivo aislado, debemos de establecer la variable de entorno anterior y la aplicación.
Con esto, ya tenemos el ambiente listo para ejecutar cualquier clase de comandos que emplee el ambiente de nuestra aplicación, en nuestro caso de interés para crear los comentarios, operación que hacemos en la función llamada main(). Para ejecutar el archivo anterior:
$ python create_comments.pyUna vez ejecutado, veremos que se han generado algunos comentarios de prueba.
Acepto recibir anuncios de interes sobre este Blog.
Aprendamos a generar datos de prueba usando el paquete de Faker de Python en Django y con el paquete instalado antes, ahora vamos a generar datos de prueba para el ecosistema de Django.