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


85

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

Answers:


140

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

codecept run tests/acceptance/VisitorCest.php:myTestName

或更短的版本:

codecept run acceptance VisitorCest:myTestName

(注意套件名称和文件名称之间的空格。)


只是一个笔记。如果它是单元测试(从PHPUnit_Framework_TestCase扩展),则无法运行单个测试,因为代码接收没有过滤器选项(与phpunit不同)
coviex15年

3
codecept运行unit / TestThatExtendsPHPUnit.php:testMethod对我来说很好。
mike.pj 2015年

4
您可以省略.php文件扩展名,例如:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

myTestName也不必是完整的测试名称。它将运行部分匹配的任何测试
andrewtweber

我如何也可以使用依赖项运行?
Diogo Alves


20

除了@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$

9

一种更合适的方法是将组注释分配给所讨论的测试用例。这是优选的,原因如下:例如,如果您在同一类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


5

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

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

使用选项-g和组名:

$ codecept run acceptance VisitorCest -g test-aboutPage

我宁愿略微不同的方式,因为您可以在这种情况下切换并轻松导航至所需的Cest,`codecept运行测试/接受/ VisitorCest -group test-aboutPage`
Stipe

2

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


与提出的问题无关
tivnet

1

如果您正在使用 PHP Yii2 Framework,则只能使用此命令运行一个测试。

确保您位于测试目录中。

cd /codeception/frontend

codecept run -vv acceptance HomeCept

这是不相关的Yii2,而是一个事实Cept只包含一个测试,但Cest可以包含多个测试-看到最初的问题
奥利弗Hader

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.