我如何从一个套件中只运行一个测试?


How can I run only one test from a suite?

我在下面有这个测试类,我想只从它运行一个测试,例如"aboutPage"。知道怎么做吗?

我只运行这个文件:

codecept run tests/acceptance/VisitorCest.php

但是现在我只想从文件中运行一个测试。

<?php
use 'AcceptanceTester;
class VisitorCest
{
    public function _before(){}
    public function _after(){}
    public function aboutPage(AcceptanceTester $I)
    {
        $I->wantTo('check about page');
    }
    public function contactPage(AcceptanceTester $I)
    { 
        $I->wantTo('check contact page');
    }
}

只需在函数名后面加上冒号,如下所示:

codecept run tests/acceptance/VisitorCest.php:myTestName

或更短的版本:

codecept run acceptance VisitorCest:myTestName

(注意suite-name和file-name之间的空格)

是这样的:

codecept run {suite-name} {file-name}.php:{function-name}

注意suite-name和file-name之间的空格

除了@Tzook Bar Noy提供的答案外,当有多个以相同名称开头的测试时,您可以添加尾随的$。考虑下面的例子:

<?php
use 'AcceptanceTester;
class VisitorCest
{
    public function aboutPage(AcceptanceTester $I)
    {
    }
    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

下面的命令将同时执行两个测试:

codecept run tests/acceptance/VisitorCest.php:aboutPage

这将只执行第一个:

codecept run tests/acceptance/VisitorCest.php:aboutPage$

更合适的方法是为测试用例分配一个组注释。这是可取的,原因如下:如果您有两个测试用例,例如在同一个类VisitorCest;

public function aboutPage
public function aboutPage2
执行

codecept run tests/acceptance/VisitorCest.php:aboutPage

将同时运行VisitorCest:aboutPage和VisitorCest:aboutPage2测试用例。

为一个测试用例分配一个组,像这样

/**
 * @group aaa
 */
public function aboutPage(AcceptanceTester $I)
{
}

并像这样执行这个特定的测试用例

codecept run -g aaa

除了前面的答案之外,您还可以通过按给定名称分组来运行一个或多个方法:

/**
 * @group test-aboutPage
 */
public function aboutPage(AcceptanceTester $I)
{
    $I->wantTo('check about page');
}

使用选项-g和组名:

$ codecept run acceptance VisitorCest -g test-aboutPage

我就是这么做的。 php codecept.phar run unit UnitNameTest.php

如果您使用的是PHP Yii2 Framework,那么使用该命令只能运行一个测试。

确保你在tests目录下。

cd /codeception/frontend
codecept run -vv acceptance HomeCept

今天我知道了这个问题更一般的答案。有一种隐藏的方法可以运行任意Codeception测试列表。假设您想要运行Cest1.php、Cest2.php、Cest3.php,除此之外别无其他。他们都来自不同的套房,不同的组等。

这是实现这一点的示例代码:

codecept run -o "groups: custom: [Cest1.php, Cest2.php, Cest3.php]" -g custom

诀窍是您动态地定义一个组,将所需的测试包含到其中,并在单个命令中立即从新生儿组执行测试。

试试phpunit——filter {TestMethodName} {FilePath}