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

Tzo*_*Noy 80 php codeception

我在下面有这个测试类,我想从它只运行一个测试,例如"aboutPage".有什么想法?

这就是我只运行这个文件的方式:

codecept run tests/acceptance/VisitorCest.php
Run Code Online (Sandbox Code Playgroud)

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

<?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');
    }
}
Run Code Online (Sandbox Code Playgroud)

Tzo*_*Noy 133

您只需附加一个冒号和函数名称,如下所示:

codecept run tests/acceptance/VisitorCest.php:myTestName
Run Code Online (Sandbox Code Playgroud)

或更短的版本:

codecept run acceptance VisitorCest:myTestName
Run Code Online (Sandbox Code Playgroud)

(注意suite-name和文件名之间的空格.)

  • codecept run unit/TestThatExtendsPHPUnit.php:testMethod对我来说很好用. (3认同)
  • 你可以省略`.php`文件扩展名,如下所示:`codecept run - -c frontend unit models/ContactFormTest:testSendEmail` (3认同)

Mah*_*alt 37

这是有效的:

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

注意suite-name和文件名之间的空格

  • 不需要`.php`部分. (2认同)
  • @tivnet这仅适用于Codeception 2.x. (2认同)

con*_*uxe 16

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

<?php

use \AcceptanceTester;

class VisitorCest
{
    public function aboutPage(AcceptanceTester $I)
    {
    }

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}
Run Code Online (Sandbox Code Playgroud)

以下命令将执行两个测试:

codecept run tests/acceptance/VisitorCest.php:aboutPage
Run Code Online (Sandbox Code Playgroud)

这将只执行第一个:

codecept run tests/acceptance/VisitorCest.php:aboutPage$
Run Code Online (Sandbox Code Playgroud)


Ako*_*ert 7

一种更合适的方法是将组批注分配给所讨论的测试用例。由于以下原因,这是可取的;例如,如果您在同一类VisitorCest中有两个测试用例;

public function aboutPage
public function aboutPage2
Run Code Online (Sandbox Code Playgroud)

执行中

codecept run tests/acceptance/VisitorCest.php:aboutPage
Run Code Online (Sandbox Code Playgroud)

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

将组分配给这样的测试用例

/**
 * @group aaa
 */
public function aboutPage(AcceptanceTester $I)
{
}
Run Code Online (Sandbox Code Playgroud)

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

codecept run -g aaa


Igo*_*rra 5

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

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

使用选项-g和组名:

$ codecept run acceptance VisitorCest -g test-aboutPage
Run Code Online (Sandbox Code Playgroud)