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

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).


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


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$

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


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

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


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

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,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.