SimpleTest

RECU-0286 (Recurso Ficha Técnica)

Descripción

Este módulo permite testear de forma automática, dentro de Drupal, de manera eficiente y sencilla. Por sus características, permite crear una API de pruebas específicas para Drupal.

Ejemplo de Uso

La intención de la prueba es acceder a la dirección helloworld y comprobar que aparezca el texto 'Hello World!'.

helloworld.info
; $Id$
name = Hello World
description = Hello World simple module
core = 6.x
package = Hello

El módulo sobre el que se quiere ejecutar la prueba es el siguiente:

helloworld.module
<?php
// $Id$
/**
 * Implementation of hook_menu()
 */
function helloworld_menu() {
  $items = array();
 
  $items['helloworld'] = array(
    'title' => 'Hello World',
    'page callback' => 'helloworld_page',
    'access arguments' => array('access helloworld content'),
    'type' => MENU_NORMAL_ITEM,
  );
 
  return $items;
}

/**
 * Return content
 */
function helloworld_page() {
  $greeting = variable_get('helloworld_greeting', 'Hello World!');
 
  $content = '<div id="helloworld_block"><div class="greeting">' .
    $greeting . '</div></div>';
   
  return $content;
}

La clase HelloWorldTestCase extiende a DrupalWebTestCase, que permite imitar una navegación.

  • getInfo(): hace que el caso de prueba sea accesible desde la interface de SimpleTest.
  • setUp(): permite definir el entorno inicial para las prueba. Por ejemplo, hay órdenes para crear usuarios y simular logins. En este caso, no se hace nada de eso, sólo lo mínimo.
  • El nombre del método de la prueba comienza con test, luego el nombre de la prueba.
  • drupalGet(url): permite simular un acceso a la página de url especificado.
  • assertText(): comprueba si el texto especificado está presente en la página abierta. Sólo el texto; el HTML es ignorado. Opcionalmente, se puede asociar un mensaje a la prueba.
helloworld.test
<?php
// $Id$
class HelloWorldTestCase extends DrupalWebTestCase {
  protected $privileged_user;
 
  public static function getInfo() {
    return array(
      'name' => 'Hello World',
      'description' => 'Hello World simple module.',
      'group' => 'Hello',
    );
  }
 
  public function setUp() {
    parent::setUp('helloworld');
  }
 
  public function testHelloPage() {
    $this->drupalGet('helloworld');
    $this->assertText('Hello World!', 'Greeting in Page');
  }

Ventajas e inconvenientes

La mayoría de la funcionalidad desarrollada en Drupal está orientada a la Web, por lo que es importante tener una manera de ejercer estas funciones. SimpleTest crea una instalación completa de Drupal y un navegador virtual y utiliza el navegador para caminar por la instalación de Drupal a través de una serie de pruebas, al igual que lo haría si lo estuviera haciendo de forma manual.

Es importante tener en cuenta que cada prueba se ejecuta en una instancia de Drupal completamente nueva, que se crea a partir de cero para la prueba. En otras palabras, ni la configuración ni ninguno de los usuarios existe. Ninguno de los módulos están habilitados más allá de los módulos básicos por defecto de Drupal. Si su secuencia de prueba requiere un usuario con privilegios, tendrá que crear uno (como lo haría si usted fuera la creación de un entorno de pruebas manual a partir de cero). Si los módulos tienen que estar activados, tiene que habilitarlos. Si algo tiene que ser configurado, habrá que hacerlo manualmente, porque las instancias que se crean para las pruebas no están configuradas.

Requisitos e incompatibilidades

La librería php-curl es necesaria para el funcionamiento de SimpleTest

Contenidos relacionados

Pautas
Área: Desarrollo » Librerías y Módulos » PHP
Código Título Tipo Carácter
LIBP-0351 Módulos para Drupal Libro de pautas Directriz Recomendada