スイートから1つのテストのみを実行するにはどうすればよいですか?


85

以下にこのテストクラスがあり、そこから「aboutPage」などのテストを1つだけ実行したいと思います。どのようにアイデアはありますか?

これは私がこのファイルだけを実行する方法です:

codecept run tests/acceptance/VisitorCest.php

しかし今、私はファイルから1つのテストだけを実行したいと思います。

<?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');
    }
}

回答:


140

次のように、コロンと関数名を追加するだけです。

codecept run tests/acceptance/VisitorCest.php:myTestName

またはより短いバージョン:

codecept run acceptance VisitorCest:myTestName

(スイート名とファイル名の間のスペースに注意してください。)


ただのメモ。それがある場合は、単一のテストを実行することはできませんユニット(から延長テストPHPUnit_Framework_TestCaseを)としてcodeceptionは全く持っていないフィルタオプション(とは異なり、PHPUnitのを
coviex

3
codecept run unit / TestThatExtendsPHPUnit.php:testMethodは私にとっては問題なく動作します。
mike.pj 2015

4
あなたは省略できます.php。このように、ファイル名の拡張子をcodecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

myTestName完全なテスト名である必要もありません。これは、部分一致で任意のテストを実行します
andrewtweber

依存関係を使用して実行するにはどうすればよいですか?
ディオゴアルベス

39

これが機能するものです:

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

スイート名とファイル名の間のスペースに注意してください


技術的には、より一般的な解決策があります。しかし、証明されているように、ほとんどの人は代わりに例を見るのが好きです。
iGbanam 2014

2
.php部品は必要ありません。
tivnet 2015

2
@tivnetこれはCodeception2.xにのみ当てはまります
Conceptdeluxe 2015

21

@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に2つのテストケースがある場合。

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

前の回答に加えて、特定の名前でグループ化することにより、1つまたは複数のメソッドを実行できます。

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

オプション-gとグループの名前を使用します。

$ codecept run acceptance VisitorCest -g test-aboutPage

その場合はタブを付けて目的のCestに簡単に移動できるため、少し異なる方法をお勧めします。 `codecept run tests / acceptance / VisitorCest -group test-aboutPage`
Stipe

2

これが私がすることです。 php codecept.phar run unit UnitNameTest.php


尋ねられた質問とは無関係
tivnet 2015

1

を使用している場合PHP Yii2 Framework、このコマンドを使用して実行できるテストは1つだけです。

テストディレクトリにいることを確認してください。

cd /codeception/frontend

codecept run -vv acceptance HomeCept

これはYii2とは関係ありませんCeptが、1つのテストしか含まれていませんCestが、複数のテストを含めることができるという事実に関連しています-最初の質問を参照してください
Oliver Hader 2016

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.