Probar su sitio web Drupal ahora es más fácil con Behat (un tutorial completo)

Publicado: 2020-09-08

“No hay nada en el mundo más poderoso que una buena historia”, dijo el rey del ingenio y la sabiduría, Tyrion Lannister.

El poder de las historias y la buena comunicación permite una entrega de software colaborativa y eficiente. Evolucionando a partir de metodologías ágiles, las tecnologías de desarrollo impulsado por el comportamiento (BDD) aprovechan este poder al máximo para automatizar el proceso de prueba. Behat es una de esas tecnologías BDD que permite realizar pruebas automatizadas utilizando un “lenguaje ubicuo”. Aprendamos más sobre Behat, Mink, Gherkin y cómo implementarlo en Drupal.

behat drupal

¿Qué es Behat?

Behat es un marco PHP de código abierto que se utiliza para automatizar las pruebas aprovechando el desarrollo impulsado por el comportamiento (BDD). Un enfoque BDD garantiza la entrega de software de calidad al centrarse en la comunicación continua y las historias de texto simples. Con BDD, el evaluador crea casos de prueba en un lenguaje legible por humanos. Debido a esto, es fácil hacer que todo el equipo esté en la misma página, ya que todos, desde el propietario del producto hasta el desarrollador, pueden comprender y obtener comentarios continuos sobre el escenario actual.

¿Qué es el pepinillo?

El lenguaje utilizado por la herramienta Behat es Gherkin, que es un lenguaje específico de dominio y legible para empresas. Gherkin también sirve como documentación dinámica y se pueden generar informes para documentar cada ejecución de prueba. Este sencillo lenguaje basado en espacios en blanco utiliza palabras sencillas como palabras clave. Las sangrías (usando el espacio / tabulador) y los finales de línea definen la estructura del caso de prueba. Aunque escribir y comprender el idioma es fácil, el resultado final debe centrarse en permitir una mejor colaboración, eficiencia, automatización y trazabilidad. Los casos de prueba deben escribirse de forma intuitiva, centrarse en elementos importantes, evitar comprobar registros duplicados y utilizar una buena gramática.

¿Qué es Mink?

Mink es un controlador de navegador de código abierto que simula un escenario de prueba con la aplicación web. Una vez que se escriben los casos de prueba, es necesario ejecutarlos y emular las acciones del usuario. Con Mink, puede usar el mismo escenario de prueba y ejecutarlo en varios emuladores de navegador como Goutte, Selenium, Chrome, Zombie y más. Mientras instala la extensión Behat Drupal, verá una dependencia en Mink, así que asegúrese de tenerla instalada también.

Instalación e implementación de Behat en Drupal

La forma oficial de instalar Behat en su proyecto Drupal es a través de Composer. No solo puede instalar Behat por usted, sino que también podrá actualizarlo fácilmente a la última versión más adelante cuando salga una.

• Dentro de la carpeta del proyecto, ejecute el comando:

 $ composer requiere behat / behat

• O dentro de su archivo composer.json, agregue la declaración require

 "exigir": {
                "behat / behat": "^ 3.0.0",
     "Phpunit / phpunit": "^ 5.0.0"
     }

• A continuación, ejecute el comando composer install en la terminal.
• Cuando termine, también verá un nuevo directorio bin / con un archivo Behat en él. Este es el ejecutable de Behat y lo usará para ejecutar sus pruebas y obtener información de depuración.
• A continuación, cree un archivo llamado behat.yml dentro de la carpeta raíz del proyecto. Cuando se ejecuta Behat, busca un archivo behat.yml , que utiliza para su configuración.

defecto:
  suites:
    defecto:
      contextos:
        - Drupal \ DrupalExtension \ Context \ DrupalContext
  extensiones:
    Behat \ MinkExtension:
      gota: ~
      base_url: http://example.org/ # Reemplazar con la URL de su sitio
    Drupal \ DrupalExtension:
      caja negra: ~

Para inicializar el proyecto, ejecute el comando:

 vendor / bin / behat –init

Esto crea una carpeta de características / y un archivo de contexto predeterminado bootstrap / FeatureContext.php dentro de la carpeta de características /.

Escribir historias y ejecutar pruebas con Behat

Nuestro objetivo es describir las historias de la forma más eficaz. Las historias están escritas en un lenguaje legible por humanos, Gherkin, con la extensión. función en el directorio features /.

Imaginemos que necesita probar si puede agregar contenido al tipo de contenido de la página básica en su sitio con éxito o no. Para hacer eso, debe tener acceso a la página para completar los campos y guardarla como administrador.

Entonces, escribamos nuestra primera historia:

 Característica: Verifique la página básica CT
 Para crear una página
 Como administrador
 Quiero acceder a / node / add / page
 Para que pueda crear una página

Escenario: CT de página básica
 Dado que he iniciado sesión como usuario con el rol de "administrador"
 Cuando voy a "/ node / add / page"
 Y escribo "Título de página básico" para "editar-título-0-valor"
 Cuando presiono "editar-enviar"
 Entonces debería ver "Página básica Se ha creado el título de la página básica"

Este archivo puede denominarse basic_page.feature . Cada característica puede tener muchos escenarios, que describen el comportamiento específico de la característica. Cada escenario tendrá secciones:
Dado : detalla el estado inicial del sistema.
Cuándo : incluye la acción que realiza el usuario.
Luego : describe lo que ve el usuario después de realizar una acción.
Y - para mantener la conectividad en el escenario.
No hay mucha diferencia entre Then, And y But . Estas palabras están disponibles para que sus escenarios sean naturales y legibles.

Todos los archivos de características pueden ser ejecutados por vendor / bin / behat . Si desea ejecutar un archivo de características específico, ejecute vendor / bin / behat features / basic_page.feature. También hay una manera de ejecutar un único escenario simplemente agregando un número de línea donde se define el escenario: vendor / bin / behat features / basic_page.feature: 11 .

Hay comandos como vendor / bin / behat -dl, que le proporcionan toda la sintaxis de instrucciones que se utiliza en los escenarios y vendor / bin / behat -di proporciona la sintaxis junto con los ejemplos.

Cómo escribir archivos de características

 Behat ejecuta solicitudes curl contra URL en su sitio web, lo que hace que el proceso de prueba sea bastante rápido, pero también hace que Behat pierda la capacidad de probar funciones que requieren Javascript. Entonces, para probar las características, solo necesitamos agregar la etiqueta @javascript antes de cada escenario que requiera Javascript, como este:

Característica: Verifique la página básica CT
 Para crear una página
 Como administrador
 Quiero acceder a / node / add / page
 Para que pueda crear una página

@api @javascript
Escenario: CT de página básica
 Dado que he iniciado sesión como usuario con el rol de "administrador"
 Cuando voy a "/ node / add / page"
Y escribo "Título de página básico" para "editar-título-0-valor"
Y completo wysiwyg en el campo "edit-body-0-value" con "Contenido básico de la página"
Cuando presiono "editar-enviar"
 Entonces debería ver "Se ha creado el título de la página básica de la página básica"


Para probar esto, ejecute vendor / bin / behat . Esto le mostrará los pasos no definidos en los escenarios porque los escenarios deben correlacionarse con una función.

behat


Puede copiar y pegar el fragmento de código en el archivo de contexto FeatureContext.php o ejecutar vendor / bin / behat --dry-run --append-snippets .

Luego puede escribir las definiciones para las funciones en FeatureContext.php como se muestra:

 <? php

use Behat \ Mink \ Exception \ ExpectationException;
use Drupal \ DrupalExtension \ Context \ RawDrupalContext;

/ **
 * Define las características de la aplicación a partir del contexto específico.
 * /
class FeatureContext extiende RawDrupalContext {

  / **
   * El contexto del visón.
   *
   * @var Drupal \ DrupalExtension \ Context \ MinkContext
   * /
  protected $ minkContext;

  / **
   * Inicializa el contexto.
   *
   * Cada escenario tiene su propia instancia de contexto.
   * También puede pasar argumentos arbitrarios al
   * constructor de contexto a través de behat.yml.
   * /
  función pública __construct () {
  }

  / **
   * Complete wysiwyg en el campo.
   *
   * @Luego completo wysiwyg en el campo: localizador con: valor
   * /
  función pública iFillInWysiwygOnFieldWith ($ localizador, $ valor) {
    $ el = $ this-> getSession () -> getPage () -> findField ($ locator);
    if (vacío ($ el)) {
      lanzar nueva ExpectationException ('No se pudo encontrar WYSIWYG con el localizador:'. $ locator, $ this-> getSession ());
    }
    $ fieldId = $ el-> getAttribute ('id');
    if (vacío ($ fieldId)) {
      lanzar una nueva excepción ('No se pudo encontrar una identificación para el campo con el localizador:'. $ localizador);
    }
    $ this-> getSession ()
      -> executeScript ("CKEDITOR.instances [\" $ fieldId \ "]. setData (\" $ valor \ ");");
  }

}

Ahora, ejecute el comando vendor / bin / behat y todos los escenarios que están escritos deben pasar. La función JS definida mapeará la declaración de escenario " Y yo completo wysiwyg en el campo" edit-body-0-value " con" Contenido de página básico ".