Fundamentos de Django
Entornos Virtuales y Configuración de Django en Python
Instalación y configuración de Django con pip y django-admin
Arquitectura MBT en Frameworks Web: Model, View y Template
Modelo, Vista y Plantilla en Django: Creación y Conexión Básica
La M en el Patrón: Modelo
Modelos y Migraciones en Django ORM
Manejo Avanzado de Modelos y Bases de Datos
Migraciones en Django: Creación de Tablas en la Base de Datos
Creación y Gestión de Campos en Tablas de Django ORM
Modificación y Eliminación de Datos en Base de Datos con Python
Relaciones y Asociaciones entre Modelos
Relaciones de Tablas Uno a Muchos con Django
Relaciones de Muchos a Muchos en Modelos de Base de Datos
Relaciones 1 a 1 en Django: Creación y Gestión de Perfiles de Autor
Uso de Managers en Django para Consultas de Base de Datos
Configuración de URLs y Vistas Avanzadas
URLs Dinámicas en Django: Creación y Gestión Eficiente
Vistas en Django: Funciones vs Clases y su Implementación
La T en el Patrón: Plantillas o Templates
Templates y Tags en Django: Creación de Aplicaciones Web
Desarrollo de Aplicaciones en Django
Configuración de Proyecto Django: Entorno, Extensiones y Repositorio
Creación de Modelos de Producto en Django para Cafeterías
Instalación y uso de Pillow para campos de imagen en Django
Creación y Gestión de Formularios con Django
Creación de Plantillas con Django y Tailwind CSS
Administración de Modelos en Django: Configuración y Uso de Django Admin
Creación de Login y Registro de Usuarios en Django
Creación de una Aplicación de Pedidos en Django
Detalle de Orden y Personalización de Vistas en Django
Corrección de errores en MyOrderView para autenticación de usuario
Crear y configurar vistas para agregar productos a una orden en Django
Django Rest Framework
Creación de APIs con Django REST Framework
Despliegue de aplicaciones Django
Configuración de Bases de Datos con Django y AWS RDS
Uso de Django Environ para Manejar Credenciales Seguras
Testing de Aplicaciones Django con Unit Tests
Despliegue de Proyectos Django en AWS: Configuración y Mejora de Código
Despliegue de Aplicaciones con AWS Elastic Beanstalk y Django
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Cuando trabajamos en equipos grandes de desarrollo, es fundamental garantizar que nuestro código funcione correctamente y no genere problemas al modificar o agregar nuevas funcionalidades. Django, un popular framework web en Python, nos proporciona un conjunto de herramientas para realizar pruebas (testing), una práctica indispensable para asegurar el buen funcionamiento de nuestra aplicación con cada cambio que implementamos. Veamos cómo podemos llevar a cabo pruebas unitarias en una aplicación Django.
Una característica esencial de nuestra aplicación, Coffee Shop, es la lista de productos que los usuarios pueden visualizar. Para verificar que esta funcionalidad funcione correctamente, incluso después de realizar cambios en el código, podemos implementar pruebas unitarias siguiendo estos pasos:
Crear un archivo de pruebas: Usaremos un archivo llamado Test
en nuestra carpeta tests.py
para definir las pruebas.
Definir clases de prueba: Creamos una clase en Python que contendrá nuestras pruebas. Esta clase heredará de TestCase
.
from django.test import TestCase
from django.urls import reverse
class ProductListTest(TestCase):
def test_should_return_200(self):
url = reverse('list_product')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
# Insertar un breakpoint
import pdb; pdb.set_trace()
# Podemos usar `response.context` para validar el contexto de respuesta
def test_with_products(self):
# Crear un producto
Product.objects.create(name="Test Product", price=10.0, available=True)
url = reverse('list_product')
response = self.client.get(url)
self.assertEqual(response.context['products'].count(), 1)
Otra funcionalidad clave es la de mostrar órdenes de usuario. Podemos probar dos escenarios: cuando el usuario no está logeado y cuando lo está.
Queremos redirigir al usuario no autenticado a una página de inicio de sesión.
class MyOrderViewTest(TestCase):
def test_no_logged_user_should_redirect(self):
url = reverse('my_order')
response = self.client.get(url)
self.assertEqual(response.status_code, 302) # 302 es el código para redirect
Necesitamos verificar que un usuario autenticado pueda acceder a la página de órdenes correctamente.
from django.contrib.auth import get_user_model
class MyOrderViewTest(TestCase):
def test_logged_user_access_my_order(self):
User = get_user_model()
user = User.objects.create(username="testuser")
self.client.force_login(user)
url = reverse('my_order')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
Django facilita el proceso de testing permitiendo crear pruebas y verificar que las funcionalidades no sufran interrupciones ante cambios. Prueba estas estrategias en tus propios proyectos y agrega más casos de prueba para robustecer tu aplicación. Continuar mejorando esta habilidad es crucial para cualquier profesional de desarrollo web.
Aportes 6
Preguntas 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?