codeception/module-datafactory
Codeception DataFactory module for generating realistic test data and fixtures in your suites. Helps create models/entities with sensible defaults and overrides, making tests cleaner, faster to write, and easier to maintain across unit, functional, and acceptance tests.
codeception/module-datafactory package is designed to streamline test data generation in Codeception (a PHP testing framework). It integrates with Codeception’s module system, enabling dynamic test data population via DataFactory (a standalone library for generating fake data).codeception/codeception).DatabaseMigrations, DatabaseTransactions) can complement this module for isolated, repeatable test environments.phpunit or codeception/codeception) can adopt this with minimal overhead.fzaninotto/Faker library (which Laravel already uses for fakes). No additional dependencies beyond Codeception’s core.codeception.yml and defining factory configurations (YAML/JSON/array).Factory class (e.g., create(), raw()).DatabaseFactory/ModelFactory for Eloquent models?DatabaseFactory: Better for Eloquent model testing (native integration).composer require codeception/codeception --dev
tests/codeception.yml).composer require codeception/module-datafactory --dev
codeception.yml:
modules:
enabled:
- DataFactory
tests/_data/factories.yml (or equivalent):
User:
class: App\Models\User
data:
- name: 'John Doe'
email: 'john@example.com'
$factory->define('User', [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
]);
$user = $this->haveInDatabase('User');
codeception/module-datafactory and fzaninotto/Faker for updates.DatabaseFactory configurations.setUp().| Risk | Impact | Mitigation |
|---|---|---|
| Stale dependencies | Broken tests, security vulnerabilities | Pin versions; fork if needed. |
| Non-deterministic data | Flaky tests | Seed Faker; use fixed values where needed. |
| Laravel/Eloquent gaps | Model-specific issues | Hybrid approach (Laravel factories + DataFactory). |
| Configuration errors | Silent failures | Validate factory definitions in CI. |
How can I help you explore Laravel packages today?