Skip to content

AngelGerardoMolinaValdez/web-selenium-python-robotframework-1

Repository files navigation

🤖 Proyecto de Automatización con Robot Framework 🚀

📖 Introducción

Robot Framework es un marco de trabajo (framework) de código abierto para la automatización de pruebas y la automatización de procesos de aceptación (ATDD, Acceptance Test-Driven Development). Es utilizado para automatizar pruebas funcionales, pruebas de aceptación, pruebas de sistemas, etc.

Puntos clave sobre Robot Framework:

  1. Sintaxis Simple y Legible: Robot Framework utiliza una sintaxis simple basada en palabras clave (keywords) que facilita la escritura y lectura de pruebas, incluso para personas sin un fondo técnico fuerte.

  2. Extensible: Puede ser extendido con bibliotecas (libraries) externas, que pueden ser implementadas en Python o Java. Esto permite a los usuarios añadir funcionalidades específicas o interactuar con sistemas y aplicaciones de una manera personalizada.

  3. Integración con Herramientas Existentes: Robot Framework puede integrarse con otras herramientas populares de pruebas y CI/CD como Selenium, Appium, Jenkins, entre otras.

  4. Rico en Funcionalidades: Ofrece una amplia variedad de funcionalidades out-of-the-box, incluyendo la gestión de variables, la configuración de la suite de pruebas, la ejecución condicional, entre otros.

  5. Reportes y Logs: Genera informes y logs detallados y de fácil lectura que ayudan en la identificación y solución de problemas.

  6. Multiplataforma: Funciona en la mayoría de los sistemas operativos y puede automatizar aplicaciones web, móviles y de escritorio.

Visita el sitio oficial de Robot Framework para mas información.

Comparación 📊

A continuación, se presenta una tabla comparativa y un resumen de por qué Robot Framework es una buena opcion en comparación con otros frameworks para pruebas automatizadas:

Característica Robot Framework Selenium Cypress Puppeteer Playwright WebDriverIO TestCafe Protractor
Flexibilidad - Soporte para múltiples lenguajes de programación.
- Gran cantidad de librerías y extensiones disponibles.
- Soporta múltiples lenguajes de programación como Java, C#, Python. - Diseñado específicamente para aplicaciones web modernas.
- Enfoque en simplicidad y eficiencia durante el desarrollo.
- API de alto nivel para controlar Chrome o Chromium.
- Ideal para pruebas de páginas con JavaScript moderno.
- Soporte multi-navegador para pruebas automatizadas.
- Incluye características modernas de la web.
- Implementa el protocolo WebDriver y ofrece una API simplificada para escribir pruebas automatizadas. - No necesita WebDriver.
- Entorno de prueba que se ejecuta en varios navegadores y sistemas operativos.
- Especializado en aplicaciones Angular y AngularJS.
- Integración con Selenium.
Facilidad de Uso - Sintaxis fácil basada en palabras clave.
- Curva de aprendizaje suave para usuarios nuevos.
- Amplia adopción y documentación disponible.
- Sin embargo, requiere conocimientos de programación.
- Fácil de aprender y usar.
- Menos curva de aprendizaje en comparación con Selenium.
- Documentación clara y API de alto nivel.
- Facilidad para automatizar tareas complejas.
- Sintaxis simple y fácil de usar.
- Mejor legibilidad del código en comparación con Puppeteer.
- Amplia documentación y comunidad activa.
- Sin embargo, configuración inicial puede ser compleja.
- Fácil de instalar y configurar.
- Interacción automática con elementos de la página web.
- Especializado en aplicaciones Angular.
- Sin embargo, puede ser menos intuitivo para usuarios nuevos.
Integración - Integración con Selenium para pruebas web.
- Puede utilizar bibliotecas de Selenium para casos específicos.
- Integración nativa con Selenium.
- Permite utilizar bibliotecas y herramientas de Selenium.
- No requiere integración con herramientas externas.
- Funciona independientemente como framework de pruebas.
- Integración con Chrome o Chromium a través del Protocolo DevTools. - Soporte para integración con herramientas de CI/CD y otros frameworks de pruebas. - Integración con herramientas de CI/CD y plataformas de pruebas en la nube. - Integración con herramientas de CI/CD.
- Permite ejecución en paralelo y gestión de sesiones.
- Integración con Selenium.
- Especializado en aplicaciones Angular y AngularJS.
Adaptabilidad - Capacidad para adaptarse a diferentes tecnologías y entornos de pruebas. - Puede automatizar una amplia variedad de aplicaciones web.
- Sin embargo, puede requerir más configuración inicial.
- Especialmente diseñado para aplicaciones web modernas.
- Menos adaptable a otros tipos de aplicaciones.
- Ideal para pruebas de páginas web que requieren JavaScript moderno.
- Menos adaptable a otros navegadores.
- Soporte multi-navegador y capacidades modernas de la web.
- Puede adaptarse a diferentes entornos de pruebas.
- Puede automatizar una amplia variedad de aplicaciones web.
- Sin embargo, puede requerir más configuración inicial.
- Puede automatizar una amplia variedad de aplicaciones web.
- Sin embargo, menos adaptable a otros navegadores.
- Especializado en aplicaciones Angular y AngularJS.
- Menos adaptable a otras tecnologías web.

En resumen, Robot Framework ofrece una combinación única de flexibilidad, facilidad de uso, integración y adaptabilidad que lo distingue como una excelente opción para proyectos de automatización de pruebas web.

☑️ Requisitos

Para que este proyecto funcione necesitamos:

NOTA: El controlador web debe ser del navegador que vas a utilizar, ejemplo: chrome 124 == chromedriver 124

🔗 Instalación

Los módulos que usamos en este proyecto los gestionamos con Poetry, para instalarlo ejecutaremos el comando:

  • pip install poetry==1.7.1

Hecho esto, podremos instalar las dependencias para ejecución:

  • poetry install

Si este comando no funciona, intenta con este otro:

  • poetry install --no-root

📦 Gestión de dependencias

Si necesitas agregar más dependencias, puedes hacerlo con el comando:

  • poetry add <nombre-de-la-dependencia>

Si necesitas eliminar dependencias, puedes hacerlo con el comando:

  • poetry remove <nombre-de-la-dependencia>

⚙ Configuración

Es necesario hacer algunas cosas mas para que puedas ejecutar:

  • Guarda en una carpeta el ejecutable del controlador web que hayas elegido
  • Agregar a las variables de entorno PATH (Sistema o usuario) la ruta de la carpeta donde esta dicho controlador.

NOTA: Algunas veces es necesario reiniciar la consola de comandos que vayas a utilizar.

📁 Estructura de Carpetas

Este proyecto de scripts automatizados se implementaron varios patrones de arquitectura de pruebas:

  • Page Object Model (POM): Este patrón se utiliza para mejorar el mantenimiento de las pruebas y reducir la duplicación de código. Los objetos de cada página de la aplicación se representan como archivos .resource en la carpeta pages. Estos objetos se adaptan a las palabras clave para su uso en los casos de prueba.

  • Data Driven Testing (DDT): Este patrón permite que los casos de prueba se ejecuten con diferentes conjuntos de datos. Los archivos de datos para DDT se almacenan en la carpeta data. Según el número total de filas en el archivo CSV, se ejecutará la suite de pruebas correspondiente.

  • Keyword Driven: Este patrón implica la definición de palabras clave personalizadas que representan acciones de nivel superior que se pueden utilizar en los casos de prueba. Las palabras clave se almacenan en la carpeta keywords y se invocan desde los casos de prueba.

  • Workflow Pattern: Este patrón se utiliza para definir una secuencia de pasos (o "flujo de trabajo") que se deben seguir en un caso de prueba. En este proyecto, los flujos de trabajo se definen en la carpeta tests, que contiene los casos de prueba que se ejecutarán.

project/
├── libraries/ # librerías externas
├── data/ # los archivos de datos para DDT
├── pages/ # los archivos .resource que representaran los objetos de cada pagina de la aplicacion (adaptada a keywords)
├── keywords/ # las palabras clave que se usaran para invocarse desde los casos de prueba
├── tests/ # los casos de prueba que se ejecutaran
└── workflows/ # los flujos complejos y secuenciales del proyecto

Documentación de Casos de Prueba

Este archivo contiene la documentación detallada de los casos de prueba para el sistema de gestión de cuentas y transacciones. Cada caso de prueba está meticulosamente diseñado para cubrir aspectos específicos de la funcionalidad del sistema, asegurando una amplia cobertura de pruebas y validación del comportamiento esperado de la aplicación.

Detalles del Archivo

En este documento, cada línea representa un caso de prueba específico con los siguientes campos:

  • ID del Caso de Prueba: Identificador único para cada caso de prueba.
  • Descripción: Breve descripción del propósito del caso de prueba.
  • Labels: Etiquetas asociadas para categorizar y filtrar los casos de prueba.
  • Keyword Asignada: Palabra clave que define la acción principal del caso de prueba.
  • Archivo de Datos: Nombre del archivo CSV que contiene los datos necesarios para el caso de prueba.
  • Fila de Datos Asignados: Índice de la fila en el archivo de datos que se usará para el caso de prueba.
  • Módulo de Ejecución: Ruta del módulo de pruebas donde se ejecuta el caso.
  • Datos Requeridos: Descripción de los datos necesarios para ejecutar el caso de prueba.
  • Parámetros Definidos: Parámetros específicos que se utilizan en el caso de prueba.

Casos de Prueba

Los casos están organizados por funcionalidad, incluyendo la creación de cuentas, transferencia de fondos, obtención de resúmenes de cuenta, pagos de facturas, y búsqueda de transacciones. Cada funcionalidad se prueba en diversos contextos para asegurar la robustez del sistema.

Ejemplo de Caso de Prueba

  • ID: TC001_NewAccountChecking
  • Descripción: Crea una cuenta de tipo Checking.
  • Labels: e2e, ddt, default
  • Keyword Asignada: Open New Account In The Application
  • Archivo de Datos: account.csv
  • Fila de Datos Asignados: 0
  • Módulo de Ejecución: tests.account.Account Service Workflows
  • Datos Requeridos: Tipo de cuenta, cuenta de referencia
  • Parámetros Definidos: type_account, account_reference

Este formato permite una clara visibilidad de cada caso de prueba y su propósito, facilitando la revisión, ejecución y mantenimiento de las pruebas automatizadas.

Encuentra el archivo en ./docs/tests/estimation.csv

🚀 Ejecución de Pruebas

Para ejecutar las pruebas, abrir la terminal en la carpeta raiz y ejecutar:

  • poetry run robot ...[options] [file]

Por ejemplo:

  • poetry run robot --outputdir output\robot tests\account.robot

Tambien es posible agregar el comando --listener para agregar un reporte del paso a paso de la ejecucion.

  • poetry run robot --outputdir output\robot --listener .\libraries\HtmlTestStepLogReport.py tests\account.robot

Se puede especificar mas de un tipo de reporte de evidencia en el mismo comando:

  • poetry run robot --outputdir output/robot --listener .\libraries\HtmlTestStepLogReport.py --listener .\libraries\HtmlTestStepSilderReport.py tests\account.robot

TestReportLibrary.py 📚

Test Report Library es una librearía que permite generar reportes de pruebas de manera dinámica. Los reportes pueden ser generados en formato PDF, HTML Vertical Slider y HTML Horizontal Slider.

HTML vertical con imagenes

Reporte vertical en formato HTML

HTML horizontal con imagenes

Reporte horizontal en formato HTML

PDF con imagenes

Reporte en formato PDF

Encuentra la documentacion completa en ./docs/keywords/standard/TestReportLibrary.html

SuiteReportGenerator.py

Este es un listener que se encuentra en la ruta ./config/execution/ y permite la creacion de un reporte general de todos los casos de prueba, es similar al reporte que genera Robot Framework (report.html) pero con un estilo diferente.

Si se agrega este listener a la ejecucion se creara en la carpeta output/reports/suite_report el archivo html con el reporte generado.

Reporte de ejecucion por suite

DataTableLibrary.py 📚

DataTableLibrary es una librería de Robot Framework que permite crear DataTables a partir de un archivo CSV o JSON y acceder a los datos de la fila como atributos del objeto.

Encuentra la documentacion completa en ./docs/keywords/standard/DataTableLibrary.html

TestsExecutionResults.py 📚

TestsExecutionResults es una librería que permite guardar la información de la ejecución de los tests en un archivo de datos.

Las funcionalidades se integran con la librería DataTableLibrary.py de este proyecto, es decir, se puede utilizar un DataTable para guardar la información de la ejecución de los tests, sin embargo, se puede adaptar también a diccionarios.

Encuentra la documentacion completa en ./docs/keywords/standard/TestsExecutionResults.html

HighLightLibrary.py 📚

Esta libreria permite resaltar elementos en la página web durante la ejecución de pruebas. ✨

Es util para resaltar elementos en la página web durante la ejecución de pruebas, para que los usuarios puedan ver claramente que elementos están siendo afectados por las pruebas. 👀

Encuentra la documentacion completa en ./docs/keywords/standard/HighLighLibrary.html

CryptoLibrary.py 📚

CryptoLibrary es una librería para encriptar y desencriptar texto. Se utiliza la librería cryptocode para realizar la encriptación y desencriptación.

Encuentra la documentacion completa en ./docs/keywords/standard/CryptoLibrary.html

📊 Análisis de código

Un linter es una herramienta utilizada para analizar automáticamente el código fuente en busca de errores.

En este proyecto se utilizo el linter de RoboCop.

Para obtener el análisis del código, hay que estar en la carpeta raíz del proyecto y ejecutar el comando:

  • poetry run robocop

Este comando generara en la terminal un resumen de todos los issues encontrados

About

Demo sencillo en Robot Framework utlizando la libreria Selenium Library

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published