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.
También en la biblioteca
Biblioteca estándar de C++: revisión completa de capacidades
Trabajo con YAML en C# (.NET): bibliotecas y ejemplos de uso
Análisis de HTML en PHP: Guía completa de bibliotecas y herramientas
Trabajo con Excel en TypeScript: bibliotecas, ejemplos y herramientas