Come posso eseguire un solo test da una suite?


87

Ho questa classe di test di seguito e voglio eseguire solo un test da essa, ad esempio "aboutPage". Delle idee come?

Ecco come eseguo solo questo file:

codecept run tests/acceptance/VisitorCest.php

Ma ora voglio eseguire solo un test dal file.

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

Risposte:


142

Devi semplicemente aggiungere due punti e il nome della funzione, in questo modo:

codecept run tests/acceptance/VisitorCest.php:myTestName

o una versione più breve:

codecept run acceptance VisitorCest:myTestName

(Notare lo spazio tra il nome della suite e il nome del file.)


solo una nota. non è possibile eseguire un singolo test se si tratta di uno unit test (esteso da PHPUnit_Framework_TestCase ) poiché codeception non ha alcuna opzione di filtro (a differenza di phpunit )
coviex

3
codecept run unit / TestThatExtendsPHPUnit.php: testMethod funziona bene per me.
mike.pj

4
Puoi omettere l' .phpestensione del nome del file, in questo modo:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

1
myTestNamenon deve nemmeno essere il nome completo del test. Verrà eseguito qualsiasi test con una partita parziale
andrewtweber

Come posso eseguire anche con le dipendenze?
Diogo Alves

40

questo è ciò che funziona:

codecept esegue {nome-suite} {nome-file} .php: {nome-funzione}

notare lo spazio tra il nome della suite e il nome del file


tecnicamente hai la soluzione più generale. ma come dimostrato, alla maggior parte delle persone piace invece vedere esempi.
iGbanam

2
Non serve la .phpparte.
tivnet

2
@tivnet Questo è vero solo per Codeception 2.x
conceptdeluxe

22

Oltre alla risposta fornita da @Tzook Bar Noy puoi aggiungere un finale $quando ci sono più test che iniziano con lo stesso nome . Considera il seguente esempio:

<?php

use \AcceptanceTester;

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

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

Dove il seguente comando eseguirà entrambi i test:

codecept run tests/acceptance/VisitorCest.php:aboutPage

Questo eseguirà solo il primo:

codecept run tests/acceptance/VisitorCest.php:aboutPage$

10

Un modo più corretto per farlo sarà assegnare un'annotazione di gruppo al test case in questione. Questo è preferibile per il seguente motivo; Se hai due casi di test, ad esempio, nella stessa classe VisitorCest;

public function aboutPage
public function aboutPage2

In esecuzione

codecept run tests/acceptance/VisitorCest.php:aboutPage

eseguirà entrambi i casi di test VisitorCest: aboutPage e VisitorCest: aboutPage2.

Assegna un gruppo a un test case come questo

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

Ed esegui questo particolare test case in questo modo

codecept run -g aaa


5

Oltre alle risposte precedenti, puoi eseguire uno o più metodi raggruppandoli per nome:

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

Usa l'opzione -ge il nome del gruppo:

$ codecept run acceptance VisitorCest -g test-aboutPage

Preferirei un modo leggermente diverso, dal momento che in questo caso puoi tabulare e navigare facilmente verso un Cest desiderato, `codecept run tests / Accept / VisitorCest -group test-aboutPage`
Stipe

2

questo è ciò che faccio. php codecept.phar run unit UnitNameTest.php


Irrilevante per la domanda posta
tivnet

1

Se stai usando PHP Yii2 Framework, puoi eseguire un solo test usando questo comando.

Assicurati di essere nella directory dei test.

cd /codeception/frontend

codecept run -vv acceptance HomeCept

Non è correlato a Yii2, ma al fatto che a Ceptcontiene un solo test, ma Cestpuò contenere più test - vedere la domanda iniziale
Oliver Hader

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.