Fournisseurs de données pour les tests paramétrés
Exécuter le même test avec plusieurs entrées grâce à dataProvider.
Fournisseurs de données pour les tests paramétrés est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.
Que sont les fournisseurs de données ?
Un fournisseur de données est une méthode qui renvoie un ensemble de données d’entrée pour les tests. PHPUnit appelle la méthode de test une fois par jeu de données, ce qui permet de tester facilement de nombreuses combinaisons de données d’entrée sans répéter le code.
Fournisseur de données de base
Le fournisseur renvoie un tableau à deux dimensions. Chaque sous-tableau correspond à un appel de la méthode de test.
<?php
public static function additionProvider(): array
{
return [
"two positives" => [2, 3, 5],
"negative" => [-1, 1, 0],
"zeros" => [0, 0, 0],
];
}Association avec un attribut (PHPUnit 10 ou version ultérieure)
Utilisez l’attribut #[DataProvider] pour associer un test à son fournisseur.
<?php
use PHPUnit\Framework\Attributes\DataProvider;
#[DataProvider("additionProvider")]
public function test_add(int $a, int $b, int $expected): void
{
$this->assertSame($expected, (new Calculator())->add($a, $b));
}Jeux de données nommés
Utilisez des clés associatives dans le tableau du fournisseur pour donner un nom descriptif à chaque jeu de données — ces noms apparaissent dans la sortie des tests.
<?php
public static function emailProvider(): array
{
return [
"valid email" => ["user@example.com", true],
"missing @" => ["userexample.com", false],
"missing domain" => ["user@", false],
"international" => ["用户@例子.com", true],
];
}Retourner des générateurs
Les fournisseurs peuvent renvoyer un Generator plutôt qu’un tableau afin de générer les jeux de données à la demande — ce qui est utile pour les jeux de données très volumineux.
<?php
public static function largeProvider(): Generator
{
for ($i = 1; $i <= 1000; $i++) {
yield "case $i" => [$i, $i * 2];
}
}Sources de données externes
Chargez les données de test depuis un fichier CSV, JSON ou une base de données dans la méthode du fournisseur afin d’exécuter les tests sur des données réelles.
<?php
public static function csvProvider(): array
{
$rows = array_map("str_getcsv", file("tests/fixtures/data.csv"));
return array_map(fn($r) => [$r[0], (int)$r[1], (int)$r[2]], $rows);
}Plusieurs fournisseurs de données
Une méthode de test peut faire référence à plusieurs fournisseurs en empilant les attributs.
Le fournisseur doit être statique
Les méthodes des fournisseurs de données doivent être déclarées static, car PHPUnit les appelle avant d’instancier la classe de test.
Tester les cas limites
Utilisez des fournisseurs pour couvrir systématiquement les cas suivants : zéro, nombres négatifs, chaînes vides, valeur nulle et entier maximal — partout où des cas limites sont susceptibles de révéler des bogues.
Sortie du fournisseur de données
Les échecs affichent le nom du jeu de données : CalculatorTest::test_add with data set "negative" ([-1, 1, 0]) — ce qui permet de repérer facilement le cas qui a échoué.
Combiner les fournisseurs avec setUp
Les fournisseurs de données et setUp peuvent être combinés. setUp s’exécute avant chaque itération et fournit à chaque jeu de données un nouvel objet à tester.
Considérations relatives aux performances
Les fournisseurs s’exécutent lors du chargement de la suite. Évitez les opérations coûteuses (appels HTTP, requêtes vers une base de données) dans les fournisseurs — préférez les fabriques et les appareils de test.
Résumé
Les fournisseurs de données éliminent la duplication des tests. Utilisez des clés associatives pour obtenir des messages d’échec descriptifs. Déclarez les fournisseurs comme static et associez-les avec l’attribut #[DataProvider].
Vérification rapide
Quel modificateur de visibilité un fournisseur de données doit-il avoir ?
Questions Fréquemment Posées
La leçon « Fournisseurs de données pour les tests paramétrés » est-elle gratuite ?
Oui — le texte complet de « Fournisseurs de données pour les tests paramétrés » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fournisseurs de données pour les tests paramétrés » ?
Exécuter le même test avec plusieurs entrées grâce à dataProvider. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer PHP Academy ?
Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Fournisseurs de données pour les tests paramétrés » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?
Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Configurer PHPUnit et écrire son premier test
- Assertions et méthodes de test
- Fournisseurs de données pour les tests paramétrés
- Simuler des dépendances avec PHPUnit