我在下面有这个测试类,我想只从它运行一个测试,例如"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}