Jak mogę uruchomić tylko jeden test z pakietu?

86

Mam tę klasę testową poniżej i chcę uruchomić z niej tylko jeden test, na przykład „aboutPage”. Jakieś pomysły jak?

Oto jak uruchamiam tylko ten plik:

codecept run tests/acceptance/VisitorCest.php

Ale teraz chcę uruchomić tylko jeden test z pliku.

<?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');
    }
}
Tzook Bar Noy
źródło

Odpowiedzi:

140

Po prostu dodajesz dwukropek i nazwę funkcji, na przykład:

codecept run tests/acceptance/VisitorCest.php:myTestName

lub krótsza wersja:

codecept run acceptance VisitorCest:myTestName

(Zwróć uwagę na spację między nazwą pakietu a nazwą pliku).

Tzook Bar Noy
źródło
tylko uwaga. nie można uruchomić jeden test, jeśli jest to jednostka testu (przedłużony od PHPUnit_Framework_TestCase ) jako codeception ma filtra opcję (w przeciwieństwie PHPUnit )
coviex
3
codecept uruchom jednostkę / TestThatExtendsPHPUnit.php: testMethod działa dobrze dla mnie.
mike.pj
4
Możesz pominąć .phprozszerzenie nazwy pliku, na przykład:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre
myTestNameteż nie musi być pełną nazwą testu. Przeprowadzi wszelkie testy z częściowym dopasowaniem
andrewtweber
Jak mogę również działać z zależnościami?
Diogo Alves
39

oto co działa:

codecept uruchom {nazwa-pakietu} {nazwa-pliku} .php: {nazwa-funkcji}

zwróć uwagę na spację między nazwą pakietu a nazwą pliku

Mahmoud Zalt
źródło
technicznie masz bardziej ogólne rozwiązanie. ale jak udowodniono, większość ludzi lubi zamiast tego oglądać przykłady.
iGbanam
2
Nie potrzebujesz .phpczęści.
tivnet
2
@tivnet Dotyczy to tylko Codeception 2.x
conceptdeluxe
21

Oprócz odpowiedzi udzielonej przez @Tzook Bar Noy możesz dodać zakończenie, $gdy istnieje wiele testów rozpoczynających się o tej samej nazwie . Rozważmy następujący przykład:

<?php

use \AcceptanceTester;

class VisitorCest
{
    public function aboutPage(AcceptanceTester $I)
    {
    }

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

Gdzie poniższe polecenie wykona oba testy:

codecept run tests/acceptance/VisitorCest.php:aboutPage

Spowoduje to wykonanie tylko pierwszego:

codecept run tests/acceptance/VisitorCest.php:aboutPage$
conceptdeluxe
źródło
10

Właściwszym sposobem będzie przypisanie adnotacji grupowej do danego przypadku testowego. Jest to preferowane z następującego powodu; Jeśli masz dwa przypadki testowe, na przykład w tej samej klasie VisitorCest;

public function aboutPage
public function aboutPage2

Wykonywanie

codecept run tests/acceptance/VisitorCest.php:aboutPage

uruchomi zarówno przypadki testowe VisitorCest: aboutPage, jak i VisitorCest: aboutPage2.

Przypisz grupę do takiego przypadku testowego

/**
 * @group aaa
 */
public function aboutPage(AcceptanceTester $I)
{
}

I wykonaj ten konkretny przypadek testowy w ten sposób

codecept run -g aaa

Akongnwi Devert
źródło
5

Oprócz poprzednich odpowiedzi możesz uruchomić jedną lub kilka metod grupując według podanej nazwy:

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

Użyj opcji -gi nazwy grupy:

$ codecept run acceptance VisitorCest -g test-aboutPage
Igor Parra
źródło
Wolałbym nieco inny sposób, ponieważ możesz w tym przypadku zakładać kartę i łatwo przejść do żądanego Cest, `codecept uruchom testy / akceptację / VisitorCest -group test-aboutPage`
Stipe
2

to jest to, co robie. php codecept.phar run unit UnitNameTest.php

Yann 叶
źródło
Bez związku z zadanym pytaniem
tivnet
1

Jeśli używasz PHP Yii2 Framework, możesz uruchomić tylko jeden test za pomocą tego polecenia.

Upewnij się, że jesteś w katalogu testing.

cd /codeception/frontend

codecept run -vv acceptance HomeCept
Muhammad Shahzad
źródło
Nie jest to związane z Yii2, ale z faktem, że a Ceptzawiera tylko jeden test, ale Cestmoże zawierać wiele testów - zobacz wstępne pytanie
Oliver Hader,
-1

Wypróbuj phpunit --filter {TestMethodName} {FilePath}

atul_systematix
źródło