Proyecto de prueba para validar Oracle Database en Docker.
- Docker y Docker Compose
- Python 3.x
- oracledb package (
pip install oracledb
)
- Asegúrate de que los scripts SQL tengan permisos de ejecución:
chmod +x init-scripts/*.sql
-
Iniciar Oracle con la versión deseada:
# Para Oracle Free (23c) ./start-oracle.sh free # Para Oracle XE 21c ./start-oracle.sh xe21 # Para Oracle XE 18c ./start-oracle.sh xe18 # Para Oracle XE 11g ./start-oracle.sh xe11
-
Verificar la conexión y estructura de la base de datos:
python verify_oracle.py
Este script verificará:
- Conexión a la base de datos
- Existencia de las tablas requeridas
- Estructura correcta de las tablas
- Datos de prueba
-
Validar Oracle Database en Docker:
python test_connection.py
Este script realizará:
- Prueba de conexión a la base de datos
- Consulta a la tabla EMPLOYEES
- Mostrará los resultados en consola
Ejemplo de salida exitosa:
Conexión exitosa en el intento 1 Resultados de la consulta: ID NOMBRE DEPARTAMENTO SALARIO 1 Juan Pérez IT 50000 2 María García RRHH 45000 3 Carlos López Ventas 48000
-
Ejecutar las pruebas automatizadas:
# Ejecutar todas las pruebas pytest test/ -v # Ejecutar solo pruebas de integración con Oracle pytest test/test_oracle_integration.py -v # Ejecutar solo pruebas de integración con Docker pytest test/test_docker_integration.py -v
Las pruebas incluyen:
Pruebas de Integración con Oracle:
- Verificación de versión de Oracle
- Estado de la conexión a la base de datos
- Mecanismo de reintento de conexión
- Manejo de credenciales inválidas
- Operaciones CRUD (Crear, Leer, Actualizar, Eliminar)
- Rollback de transacciones
Pruebas de Integración con Docker:
- Verificación del estado del contenedor
- Mapeo de puertos
- Accesibilidad de la base de datos
- Análisis de logs del contenedor
- pytest (
pip install pytest
) - oracledb (
pip install oracledb
)
- Oracle XE tiene limitaciones de recursos según la versión
- Los scripts SQL en la carpeta
init-scripts
se ejecutarán automáticamente al iniciar el contenedor - La base de datos puede tardar unos minutos en estar lista para conexiones