Skip to content

Multiple DataProviders #69

@roxblnfk

Description

@roxblnfk

Support for combining multiple data sources in parameterized tests.

Features

Union: multiple #[DataProvider]

#[DataProvider('foos')]
#[DataProvider('bars')]
public function testMethod(string $value) {}

Datasets: foos:0, foos:1, bars:0, bars:1

#[DataZip]: combine by index

#[DataZip([
    new DataProvider('letters'),  // yields 'a', 'b'
    new DataProvider('numbers'),  // yields 1, 2
])]
public function testMethod(string $letter, int $number) {}
Dataset $letter $number
0 a 1
1 b 2

Throws error if providers have different lengths.

#[DataCross]: cartesian product

#[DataCross([
    new DataProvider('letters'),  // yields 'a', 'b'
    new DataProvider('numbers'),  // yields 1, 2
])]
public function testMethod(string $letter, int $number) {}
Dataset $letter $number
0 a 1
1 a 2
2 b 1
3 b 2

Notes

  • Named yields preserved: admin|read, admin|write, etc.
  • Empty provider → Risky

Future Scope

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions