Behat es un framework para realizar pruebas basadas en comportamientos, este puede ser de gran utilidad para asegurarnos que durante el desarrollo de un proyecto debido a que evita que algún cambio afecte características previamente implementadas, de este modo se asegura de que la funcionalidad global del proyecto no se vea afectada en ningún momento del desarrollo debido a bugs causados por alguna nueva característica.
Para facilitar el proceso, todos los comandos serán ejecutados en la raíz del proyecto.
Para usar behat debemos instalar un conjunto de librerias las cuales obtendermos mediante el uso de composer ejecutando los siguientes comandos
composer require behat/behat
composer require drupal/drupal-extension
composer require drupal/drupal-driver
Podemos comprobar que las depedencias esten ahora disponibles en la carpeta /vendor del proyecto.
Para realizar las pruebas crearemos:
Comprobaremos que la instalacion de Behat sea satisfactoria ejecutando
vendor/behat/behat/bin/behat --version>
Crearemos el archivo behat.yml donde indicaremos la configuración del Behat para este proyecto especifico.
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/ # Replace with your site's URL
Drupal\DrupalExtension:
blackbox: ~
api_driver: drupal
drush:
root: %paths.base%
drupal:
drupal_root: %paths.base%
Basado en behat.yml.dist
Ejecutaremos vendor/behat/behat/bin/behat --init
el cual creara la carpeta features/ y creara un fichero base donde se pueden agregar pasos personalizados.
Crearemos los archivos básicos para un realizar un test funcional de behat.
./features/tests/
@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 tests 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 test de Behat utilizan el lenguaje Gherkin donde se define las condiciones para confirmar el correcto funcionamiento de un software mediante pasos que no requieren conocimientos de programación para su entendimiento.
Cada archivo define una característica especifica y pueden tener distintos escenarios para la misma.
Ahora procedemos a correr nuestro test mediante el uso del siguiente comando:
vendor/behat/behat/bin/behat features/tests/content_types.feature
Ya finalmente tendremos nuestra instalación de Drupal habilitada para realizar test automatizados mediante el uso de Behat, algo que resulta muy útil asegurando la integridad y evitando posibles errores causados en el desarrollo y regresiones.
Si desea probar el entorno utilizado para este Blog descargue el siguiente archivo: drupal_behat.zip