web-dev-qa-db-ja.com

Codeceptionのcestテストをスキップする方法

Codeceptioncestテストで1つのテストだけをスキップしたい。

Ceptテストを使用すると、$scenario->skip();を実行できますが、Cestテストでは機能しません。

だから私はこのようなことをしたいです。最初のテストを実行しますが、2番目のテストはスキップします。

Class MyTests{

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

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

前もって感謝します。

15
Kotie Smit

あなたが探している方法は「不完全」と呼ばれます。

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

Cestファイルでシナリオを使用する場合は、テストメソッドの2番目のパラメーターを使用してシナリオを取得できます。

_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');
    }
}
_
20
rickroyce

ユニットテストにはskipアノテーションを使用します。

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

まず、使用できるコマンドは、ロードしたモジュールとスイートによって異なることを覚えておいてください。たとえば、デフォルトのWordPress有効なYMLで統合テストを実行している場合:

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

箱から出してCestまたはTestで機能することはありませんが、Acceptanceで機能します。

実際、通常、このコマンドはCeptテストで機能します[Ceptは通常、テストのようなAcceptanceであり、CestsとTestsは通常OOP tests]のようなPHPUnitです。また、関数に$ scenarioを渡す必要があります。 。これは明確に文書化されておらず、Cestsで機能させることができません。BDDフレームワークのキーワードとして「$ scenario」を選択するのがいかに悪いかについては始めないでください。「シナリオ」はキーワードです。ガーキンでは、Codeceptionの「ステップオブジェクト」とは何かを指します。Codeceptionでは、環境、スイート、グループがすでに存在するにもかかわらず、冗長な形式の「環境」として使用されているようです。この優れたフレームワークのほとんどと同様に、ドキュメントと関数の名前は、英語を母国語とする人が2度目にやり直す必要があります![「ウェブガイ」を覚えていますか?ヨーロッパ人のセクシストです!笑]。

あなたが使用する場合

/**
 * @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]で黄色に変わります。テストをスキップしたいが、レポートでスキップされたことに気付いた場合は、これを使用します。

4
Jim Maguire

PHPUnit_Framework_SkippedTestErrorを使用します。例えば:

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

したがって、テスト実行中にシナリオをスキップするには、次のようにします。

  1. テストの2番目の入力パラメーターとして$ scenarioが必要です
  2. 電話をかける:$ scenario-> skip();
  3. スキップ後に電話をかける:$ I-> comment( "シナリオがスキップされた理由")
0
user2064278