0Pricing
PHP Academy · Lektion

Datenprovider für parametrisierte Tests

Führen Sie denselben Test mit mehreren Eingaben mithilfe von dataProvider aus.

Datenprovider für parametrisierte Tests ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was sind Data Provider?

Ein Data Provider ist eine Methode, die eine Reihe von Testeingaben zurückgibt. PHPUnit ruft die Testmethode einmal pro Datensatz auf. So können Sie viele Eingabekombinationen testen, ohne Code zu wiederholen.

Einfacher Data Provider

Der Provider gibt ein zweidimensionales Array zurück. Jedes Unterarray entspricht einem Aufruf der Testmethode.

<?php
public static function additionProvider(): array
{
    return [
        "two positives" => [2, 3, 5],
        "negative"      => [-1, 1, 0],
        "zeros"         => [0, 0, 0],
    ];
}

Verknüpfung mit einem Attribut (PHPUnit 10+)

Verwenden Sie das Attribut #[DataProvider], um einen Test mit seinem Provider zu verknüpfen.

<?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));
}

Benannte Datensätze

Verwenden Sie assoziative Schlüssel im Provider-Array, um jedem Datensatz einen aussagekräftigen Namen zu geben – diese Namen erscheinen in der Testausgabe.

<?php
public static function emailProvider(): array
{
    return [
        "valid email"      => ["user@example.com", true],
        "missing @"        => ["userexample.com",  false],
        "missing domain"   => ["user@",            false],
        "international"    => ["用户@例子.com",      true],
    ];
}

Generatoren zurückgeben

Provider können statt eines Arrays einen Generator zurückgeben, um Datensätze verzögert zu erzeugen – nützlich bei sehr großen Datenmengen.

<?php
public static function largeProvider(): Generator
{
    for ($i = 1; $i <= 1000; $i++) {
        yield "case $i" => [$i, $i * 2];
    }
}

Externe Datenquellen

Laden Sie Testdaten innerhalb der Provider-Methode aus CSV, JSON oder einer Datenbank, um Tests mit realistischen Daten auszuführen.

<?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);
}

Mehrere Data Provider

Eine Testmethode kann auf mehrere Provider verweisen, indem Sie mehrere Attribute untereinander angeben.

Provider müssen statisch sein

Data-Provider-Methoden müssen als static deklariert werden, da PHPUnit sie aufruft, bevor die Testklasse instanziiert wird.

Randfälle testen

Verwenden Sie Provider, um systematisch Folgendes abzudecken: null, negative Zahlen, leere Strings, null, max int – überall dort, wo Randfälle wahrscheinlich Fehler aufdecken.

Ausgabe von Data Providern

Fehlermeldungen enthalten den Namen des Datensatzes: CalculatorTest::test_add with data set "negative" ([-1, 1, 0]) – so lässt sich leicht feststellen, welcher Fall fehlgeschlagen ist.

Data Provider mit setUp kombinieren

Data Provider und setUp können kombiniert werden. setUp wird vor jeder Iteration ausgeführt, sodass jeder Datensatz ein neues zu testendes Objekt erhält.

Überlegungen zur Performance

Provider werden beim Laden der Testsuite ausgeführt. Vermeiden Sie aufwendige Vorgänge (HTTP-Aufrufe, Datenbankabfragen) in Providern – bevorzugen Sie Factories und Fixtures.

Zusammenfassung

Data Provider vermeiden doppelte Tests. Verwenden Sie assoziative Schlüssel für aussagekräftige Fehlermeldungen. Kennzeichnen Sie Provider als static und verknüpfen Sie sie mit dem Attribut #[DataProvider].

Schnelltest

Welchen Sichtbarkeitsmodifikator muss ein Data Provider haben?

Häufig gestellte Fragen

Ist die Lektion „Datenprovider für parametrisierte Tests“ kostenlos?

Ja — der vollständige Text von „Datenprovider für parametrisierte Tests“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Datenprovider für parametrisierte Tests“?

Führen Sie denselben Test mit mehreren Eingaben mithilfe von dataProvider aus. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Datenprovider für parametrisierte Tests“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. PHPUnit einrichten und den ersten Test schreiben
  2. Assertions und Testmethoden
  3. Datenprovider für parametrisierte Tests
  4. Abhängigkeiten mit PHPUnit mocken
← Zurück zu PHP Academy