Codeception para PHP: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Codeception para PHP: guía completa con ejemplos prácticos

1. ¿Qué es Codeception y para qué sirve?

Codeception es un framework de testing completo para aplicaciones PHP que integra las mejores prácticas de pruebas unitarias, funcionales, de aceptación (acceptance) y de integración. A diferencia de PHPUnit estándar, Codeception ofrece una API unificada e intuitiva para todo tipo de tests, además de potentes herramientas para trabajar con navegadores (a través de WebDriver o PhpBrowser), bases de datos, REST API e incluso JavaScript.

El objetivo principal de Codeception es hacer que el proceso de escribir tests sea lo más simple y legible posible. El framework utiliza una sintaxis similar a BDD (Behavior-Driven Development), donde los tests se describen en lenguaje natural mediante métodos de acción: $I->amOnPage('/login'), $I->fillField('email', 'user@example.com'), $I->click('Login'). Esto permite que no solo los desarrolladores, sino también testers, analistas y gerentes comprendan fácilmente qué se está verificando.

Codeception es indispensable en proyectos que requieren pruebas integrales: desde la verificación de clases individuales (unit tests) hasta la simulación de acciones de un usuario real en el navegador (acceptance tests). Soporta frameworks populares (Laravel, Symfony, Yii2, Zend), gestiona automáticamente las transacciones de la base de datos, puede tomar capturas de pantalla en caso de errores y generar informes detallados. Si deseas mejorar la calidad del código y reducir el tiempo de las pruebas de regresión, Codeception será tu aliado de confianza.

2. Instalación

Codeception se distribuye a través de Composer, el gestor de paquetes estándar para PHP. Asegúrate de tener instalado PHP versión 7.4 o superior y Composer.

Ejecuta en la terminal, en la raíz de tu proyecto:

composer require --dev codeception/codeception

Después de la instalación, puedes inicializar Codeception en el proyecto:

vendor/bin/codecept init

Este comando creará la estructura básica de directorios: tests/ con las subcarpetas unit, functional, acceptance, así como el archivo de configuración codeception.yml.

Para trabajar con tests de navegador, instala adicionalmente el módulo WebDriver (si planeas usar Selenium o ChromeDriver):

composer require --dev codeception/module-webdriver

Para probar REST API, instala el módulo REST:

composer require --dev codeception/module-rest

3. Inicio rápido — ejemplo mínimo funcional

Vamos a crear un test unitario simple para verificar una función matemática. Después de la inicialización (codecept init), ya tienes el archivo tests/unit.suite.yml. Edítalo para conectar el módulo Asserts:

# tests/unit.suite.yml
actor: UnitTester
modules:
    enabled:
        - Asserts

Ahora crea el archivo de test tests/unit/MathTest.php:

<?php
use Codeception\Test\Unit;

class MathTest extends Unit
{
    protected UnitTester $tester;

    public function testAddition()
    {
        $result = 2 + 3;
        $this->tester->assertEquals(5, $result, '2 + 3 debe ser igual a 5');
    }

    public function testSubtraction()
    {
        $result = 10 - 4;
        $this->tester->assertGreaterThan(5, $result, '10 - 4 debe ser mayor que 5');
    }
}

Ejecuta el test:

vendor/bin/codecept run unit

Deberías ver un resultado verde indicando que los tests pasaron correctamente.

Recommendations