Количество тестов больше, чем количество данных поставщика данных в CodeCeption - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть Cest в CodeCeption, который использует dataProvider:

<?php


class MyCest
{
    /**
     * @param \Codeception\Example $example
     * @dataProvider MyDataProvider
     */
    public function MyTestCase(Codeception\Example $example)
    {
        echo "Name: ", $example['name'], ", Age: ", $example['age'];
    }

    public function MyDataProvider() {
        $data = [
            ["name" => 'Alice', "age" => 20],
            ["name" => 'Tom', "age" => 35],
            ["name" => 'Bob', "age" => 60],
        ];
        return $data;
    }
}

Как видите, он возвращает 3 элемента данных, но когда я запускаю тест, журнал говорит, что у нас есть 4 теста:

zeinab@zeinab:~/PhpstormProjects/api-testing$ php vendor/bin/codecept run tests/api/MyCest.php 
Codeception PHP Testing Framework v2.5.1
Powered by PHPUnit 7.1.5 by Sebastian Bergmann and contributors.
Running with seed: 


Api Tests (4) --------------------------------------------------------------------------------------
✔ MyCest: My test case | "Alice",20 (0.00s)ice, Age: 20
✔ MyCest: My test case | "Tom",35 (0.00s)m, Age: 35
✔ MyCest: My test case | "Bob",60 (0.00s)b, Age: 60
✔ MyCest: My data provider (0.00s)
----------------------------------------------------------------------------------------------------


Time: 63 ms, Memory: 10.00MB

OK (4 tests, 0 assertions)

Я просмотрел Документация PHPUnit DataProvider ;его пример подразумевает, что количество тестов равно количеству элементов данных, возвращаемых методом dataProvider.

Кажется, что вызов dataProvider был посчитан как сам тестовый пример.

1 Ответ

0 голосов
/ 10 декабря 2018

Все открытые методы класса Cest выполняются как тесты,
, чтобы избежать защиты MyDataProvider или переименования в _MyDataProvider
, как указано в https://codeception.com/docs/07-AdvancedUsage#DataProvider-Annotations

...