【问题标题】:Test count is more than data count of data-provider in CodeCeption测试计数大于 CodeCeption 中数据提供者的数据计数
【发布时间】:2019-05-09 23:47:43
【问题描述】:

我在 CodeCeption 中有一个 Cest,它使用 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 documentation;它的示例意味着测试的数量等于从dataProvider 方法返回的数据项的数量。

dataProvider 的调用似乎已被视为测试用例本身。

【问题讨论】:

    标签: php phpunit codeception


    【解决方案1】:

    Cest 类的所有公共方法都作为测试执行,
    为避免这种情况使 MyDataProvider 受保护或将其重命名为 _MyDataProvider
    如记录在https://codeception.com/docs/07-AdvancedUsage#DataProvider-Annotations

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多