Realizando test automatizados en Drupal con Behat

June 18, 2021

Tags: IT Staff ES 2024
Share

Table of contents

Quick Access

drupal

 

Behat es un framework utilizado para realizar pruebas basadas en comportamientos, lo cual resulta muy útil para asegurarnos de que, durante el desarrollo de un proyecto, los cambios no afecten características previamente implementadas. Este enfoque garantiza que la funcionalidad global del proyecto no se vea afectada por errores (bugs) causados por nuevas características.

 

Para facilitar el proceso, todos los comandos se ejecutarán desde la raíz del proyecto.

 

Requerimientos

Antes de comenzar, asegúrate de tener los siguientes requisitos:

  • Instalación de Drupal 7.
  • Si prefieres, puedes crear una instalación de prueba utilizando el siguiente comando:

    drush qd test_behat --core=drupal-7.x -y 
  • Composer.
  • Drush.

Instalación de Dependencias

Para usar Behat, necesitamos instalar un conjunto de librerías, las cuales obtendremos mediante Composer. Ejecuta los siguientes comandos:

 
composer require behat/behat composer require drupal/drupal-extension composer require drupal/drupal-driver 

 

Puedes verificar que las dependencias estén disponibles en la carpeta /vendor del proyecto. Aquí tienes una imagen de ejemplo:

Composer vendor files

 

Preparación del Sitio para las Pruebas

Para realizar las pruebas, crearemos un nuevo Content Type (tipo de contenido) en Drupal.

 

Content Type:

  • Nombre: Test
  • Descripción: Test content for behat

Creating Test CT

 

Configuración de Behat para Usar Drupal

A continuación, comprobaremos que la instalación de Behat haya sido exitosa ejecutando el siguiente comando:

 
vendor/behat/behat/bin/behat --version 

 

Luego, crearemos el archivo behat.yml, donde configuraremos Behat para este proyecto específico. A continuación se presenta un ejemplo de configuración:

 
default:  autoload:    '': %paths.base%/features/bootstrap  suites:    default:      paths:        - %paths.base%/features/tests      contexts:        - FeatureContext        - Drupal\DrupalExtension\Context\DrupalContext        - Drupal\DrupalExtension\Context\DrushContext        - Drupal\DrupalExtension\Context\MinkContext  extensions:    Behat\MinkExtension:      goutte: ~      base_url: http://localhost:8888/  # Reemplaza con la URL de tu sitio    Drupal\DrupalExtension:      blackbox: ~      api_driver: drupal      drush:        root: %paths.base%      drupal:        drupal_root: %paths.base% 

 

A partir de este archivo behat.yml.dist, ejecutaremos el siguiente comando para inicializar el proyecto:

 
vendor/behat/behat/bin/behat --init 

Este comando creará la carpeta features/ y generará un archivo base donde podemos agregar pasos personalizados.

Run Behat init

 

Creación de un Test de Behat

Ahora crearemos los archivos básicos para realizar un test funcional con Behat.

  1. En la raíz del proyecto, crea la carpeta ./features/tests/.
  2. Dentro de esta carpeta, crea un archivo llamado content_types.feature.

 

El contenido del archivo content_types.feature será el siguiente:

 
@api Feature: Tests can be done with the test content type Scenario: An administrator can see the content type at admin page.  Given I am logged in as a user with the "administrator" role  When I visit "/admin/structure/types"  Then I should see "Test" Scenario: An administrator can see the test nodes at content.  Given I am logged in as a user with the "administrator" role  And "Test" content:    | title          | body                 |    | Test Node A    | Some content         |    | Test Node B    | Another content      |    | Test Node C    | Content String       |  When I visit "/admin/content"  Then I should see "Test Node A"  And I should see "Test Node B"  And I should see "Test Node C" Scenario: An user can see a created node.  Given I am an anonymous user  And "Test" content:    | title          | body                     | path[alias] |    | Test Node D    | Some content for testing | testnoded   |  When I am on the homepage  And I follow "Test Node D"  Then I should see the heading "Test Node D"  And I should see "Some content for testing" 

 

Los tests de Behat utilizan el lenguaje Gherkin, que permite definir las condiciones para confirmar el correcto funcionamiento del software mediante pasos comprensibles incluso para personas sin conocimientos de programación. Cada archivo define una característica específica y puede tener distintos escenarios para la misma.

 

Ejecución de los Tests de Behat

Una vez creados los archivos de prueba, podemos ejecutar el test con el siguiente comando:

 
vendor/behat/behat/bin/behat features/tests/content_types.feature 

El resultado de la ejecución será algo similar a esto:

Behat Test Result

 

Con esto, habremos habilitado nuestra instalación de Drupal para realizar pruebas automatizadas utilizando Behat. Este proceso resulta muy útil para garantizar la integridad del proyecto, evitando posibles errores causados durante el desarrollo y evitando regresiones.

 

Si deseas probar el entorno utilizado en este tutorial, puedes descargar el archivo de ejemplo: drupal_behat.zip.

 

Te recomendamos este video