Skip to content

Commit f60b5e6

Browse files
committed
Describe DataSet attribute
1 parent dc64529 commit f60b5e6

File tree

2 files changed

+52
-48
lines changed

2 files changed

+52
-48
lines changed

docs/data-providers.md

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
11
# Data Providers
22

3-
`DataProvider` lets you specify a method or callable that returns test data. Each data set from the provider runs as a separate test:
3+
Data providers let you run one test with different sets of input data. Each set runs as a separate test.
4+
5+
## DataSet
6+
7+
The simplest way — specify data directly above the method:
8+
9+
```php
10+
use Testo\Attribute\Test;
11+
use Testo\Attribute\DataSet;
12+
13+
#[Test]
14+
#[DataSet([1, 1, 2])]
15+
#[DataSet([2, 3, 5])]
16+
#[DataSet([0, 0, 0])]
17+
public function testSum(int $a, int $b, int $expected): void
18+
{
19+
Assert::same($expected, $a + $b);
20+
}
21+
```
22+
23+
Each `DataSet` is an array of arguments passed to the test method. The test runs three times with different values.
24+
25+
26+
## DataProvider
27+
28+
For large amounts of data or dynamic generation, use `DataProvider`. It accepts a method or callable that returns test data:
429

530
```php
631
use Testo\Attribute\Test;
@@ -55,26 +80,3 @@ public function testUser($data): void { ... }
5580
```
5681

5782
Invokable objects are particularly useful for separating data loading logic. For example, loading test cases from JSON/CSV files into a dedicated class keeps your test code clean.
58-
59-
### Labels and Descriptions
60-
61-
Each data set can be labeled with a string key. These labels appear in test reports, making it easier to identify which scenario failed:
62-
63-
```php
64-
public function userDataProvider(): array
65-
{
66-
return [
67-
'valid email' => ['test@example.com', true],
68-
'invalid format' => ['not-an-email', false],
69-
'empty string' => ['', false],
70-
];
71-
}
72-
```
73-
74-
Use `DataProvider` when:
75-
- You have many test cases (10+)
76-
- Data is generated dynamically or loaded from external files
77-
- Test cases need labels or descriptions for clarity
78-
- You need complex setup logic for test data
79-
80-
**Note:** `DataProvider` is an addition to regular tests (methods marked with `#[Test]`). It provides data to existing test methods.

ru/docs/data-providers.md

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
11
# Провайдеры данных
22

3-
`DataProvider` позволяет указать метод или вызываемый объект, который возвращает тестовые данные. Каждый набор данных от провайдера запускается как отдельный тест:
3+
Провайдеры данных позволяют запускать один тест с разными наборами входных данных. Каждый набор — отдельный запуск теста.
4+
5+
## DataSet
6+
7+
Самый простой способ — указать данные прямо над методом:
8+
9+
```php
10+
use Testo\Attribute\Test;
11+
use Testo\Attribute\DataSet;
12+
13+
#[Test]
14+
#[DataSet([1, 1, 2])]
15+
#[DataSet([2, 3, 5])]
16+
#[DataSet([0, 0, 0])]
17+
public function testSum(int $a, int $b, int $expected): void
18+
{
19+
Assert::same($expected, $a + $b);
20+
}
21+
```
22+
23+
Каждый `DataSet` — массив аргументов, которые передаются в тестовый метод. Тест запустится три раза с разными значениями.
24+
25+
26+
## DataProvider
27+
28+
Для большого количества данных или динамической генерации используйте `DataProvider`. Он принимает метод или вызываемый объект, который возвращает тестовые данные:
429

530
```php
631
use Testo\Attribute\Test;
@@ -55,26 +80,3 @@ public function testUser($data): void { ... }
5580
```
5681

5782
Вызываемые объекты особенно полезны для разделения логики загрузки данных. Например, загрузка тестов из JSON/CSV файлов в выделенный класс позволяет сохранить код тестов чистым.
58-
59-
### Метки и описания
60-
61-
Каждый набор данных может быть помечен строковым ключом. Эти метки отображаются в отчетах о тестах, упрощая определение того, какой сценарий не прошел:
62-
63-
```php
64-
public function userDataProvider(): array
65-
{
66-
return [
67-
'valid email' => ['test@example.com', true],
68-
'invalid format' => ['not-an-email', false],
69-
'empty string' => ['', false],
70-
];
71-
}
72-
```
73-
74-
Используйте `DataProvider`, когда:
75-
- У вас много тестов (10+)
76-
- Данные генерируются динамически или загружаются из внешних файлов
77-
- Тестам нужны метки или описания для ясности
78-
- Требуется сложная логика настройки для тестовых данных
79-
80-
**Примечание:** `DataProvider` является дополнением к обычным тестам (методам, помеченным `#[Test]`). Он предоставляет данные существующим тестовым методам.

0 commit comments

Comments
 (0)