如何跳过Codeception cest测试

时间:2015-03-11 12:39:03

标签: php testing skip codeception

我想在codeception cest测试中只跳过一个测试。

使用Cept测试,您可以执行$scenario->skip();但不适用于Cest测试。

所以我想做这样的事情。运行第一个测试,但跳过第二个测试。

Class MyTests{

   public funtion test1(){
    // My test steps
     }

   public function test2(){
     $scenario->skip("Work in progress");
     }
}

提前谢谢。

5 个答案:

答案 0 :(得分:20)

我使用skip注释进行单元测试。

/**
 * @skip
 */
public function MyTest(UnitTester $I)
{
    ...
}

答案 1 :(得分:18)

您正在寻找的方法被称为"不完整"。

$scenario->incomplete('your message, why skipping');

如果你想在Cest文件中使用Scenarios,可以使用测试方法的第二个参数来获取它:

class yourCest 
{
    public function yourTest(WebGuy $I, $scenario) 
    {
        $scenario->incomplete('your message');
    }
}

或者您可以使用$scenario->skip('your message')

class yourCest 
{
    public function yourTest(WebGuy $I, $scenario) 
    {
        $scenario->skip('your message');
    }
}

答案 2 :(得分:4)

首先,请记住,您可以使用哪些命令将取决于您加载的模块和套件。例如,如果您使用默认的WordPress启用YML进行集成测试:

$scenario->skip('your message');

无法在Cest或Test中开箱即用,但可以在Acceptance中使用。

实际上,通常这个命令适用于Cept测试[Cepts通常是像测试一样接受,Cests和Tests通常是像OOP测试一样的PHPUnit]。此外,您需要将$ scenario传递给您的函数。这没有明确记录,我不能让它在Cests中工作。不要让我开始选择“$ scenario”作为BDD框架的关键字有多糟糕! “场景”是Gherkin中的关键字,指的是Codeception中的“步骤对象”。在Codeception中,它似乎被用作“环境”的冗余形式,即使已经有环境,套件和组。像大多数这个伟大的框架一样,文档和函数名称需要由英语母语人士重做,这是第二次! [还记得“网络家伙”吗?该死的性别歧视欧洲人!洛尔]。

如果您使用

/**
 * @skip
 */
public function myTest(){
  //this test is totally ignored
}

在Cest或Test中您的函数正上方的注释将被跳过,甚至不会出现在报告中。 [真的跳过它]。如果要完全隐藏测试,请使用此选项。

如果直接使用PHPUnit命令:

public function myTest(){
  throw new \PHPUnit_Framework_SkippedTestError('This test is skipped');
  //this test will appear as a yellow “skipped” test in the report
}

这将在报告中生成跳过的测试,在HTML报告[--html]中将变为黄色。如果您想跳过测试但在报告中注意它已被跳过,请使用此选项。

答案 3 :(得分:1)

使用PHPUnit_Framework_SkippedTestError。例如:

    if (!extension_loaded('mongo')) {
        throw new \PHPUnit_Framework_SkippedTestError(
            'Warning: mongo extension is not loaded'
        );
    }

答案 4 :(得分:0)

所以在测试运行期间跳过你的场景:

  1. 您必须在测试中将$ scenario作为第二个输入参数
  2. 拨打电话:$ scenario-> skip();
  3. 跳过后拨打电话:$ I->评论("跳过方案的原因")