¿Cómo puedo ejecutar solo una prueba de una suite?


86

Tengo esta clase de prueba a continuación y solo quiero ejecutar una prueba de ella, por ejemplo, "aboutPage". ¿Alguna idea de cómo?

Así es como ejecuto solo este archivo:

codecept run tests/acceptance/VisitorCest.php

Pero ahora quiero ejecutar solo una prueba del archivo.

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

Respuestas:


140

Simplemente agregue dos puntos y el nombre de la función, así:

codecept run tests/acceptance/VisitorCest.php:myTestName

o una versión más corta:

codecept run acceptance VisitorCest:myTestName

(Observe el espacio entre el nombre de la suite y el nombre del archivo).


solo una nota. no puede ejecutar una sola prueba si es una prueba unitaria (extendida desde PHPUnit_Framework_TestCase ) ya que codeception no tiene opción de filtro (a diferencia de phpunit )
coviex

3
codecept run unit / TestThatExtendsPHPUnit.php: testMethod funciona bien para mí.
mike.pj

4
Puede omitir la .phpextensión del nombre de archivo, así:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

myTestNametampoco tiene que ser el nombre completo de la prueba. Ejecutará cualquier prueba con una coincidencia parcial
andrewtweber

¿Cómo puedo ejecutar también con dependencias?
Diogo Alves

39

esto es lo que funciona:

codecept ejecutar {nombre-suite} {nombre-archivo} .php: {nombre-función}

observe el espacio entre el nombre de la suite y el nombre del archivo


técnicamente tienes la solución más general. pero como se ha demostrado, a la mayoría de la gente le gusta ver ejemplos.
iGbanam

2
No necesita la .phppieza.
tivnet

2
@tivnet Esto solo es cierto para Codeception 2.x
conceptdeluxe

21

Además de la respuesta proporcionada por @Tzook Bar Noy , puede agregar un final $cuando hay varias pruebas que comienzan con el mismo nombre . Considere el siguiente ejemplo:

<?php

use \AcceptanceTester;

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

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

Donde el siguiente comando ejecutará ambas pruebas:

codecept run tests/acceptance/VisitorCest.php:aboutPage

Esto ejecutará solo el primero:

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

10

Una forma más adecuada de hacer esto será asignar una anotación de grupo al caso de prueba en cuestión. Esto es preferible por la siguiente razón; Si tiene dos casos de prueba, por ejemplo, en la misma clase VisitorCest;

public function aboutPage
public function aboutPage2

Ejecutando

codecept run tests/acceptance/VisitorCest.php:aboutPage

ejecutará los casos de prueba VisitorCest: aboutPage y VisitorCest: aboutPage2.

Asignar un grupo a un caso de prueba como este

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

Y ejecute este caso de prueba en particular como este

codecept run -g aaa


5

Además de las respuestas anteriores, puede ejecutar uno o varios métodos agrupando por un nombre dado:

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

Utilice la opción -gy el nombre del grupo:

$ codecept run acceptance VisitorCest -g test-aboutPage

Preferiría una forma ligeramente diferente, ya que puede tabular en ese caso y navegar fácilmente a un Cest deseado, `codecept ejecutar pruebas / aceptación / VisitorCest -group test-aboutPage`
Stipe

2

esto es lo que hago. php codecept.phar run unit UnitNameTest.php


Irrelevante para la pregunta realizada
tivnet

1

Si lo está utilizando PHP Yii2 Framework, puede ejecutar solo una prueba con este comando.

Asegúrese de estar en el directorio de pruebas.

cd /codeception/frontend

codecept run -vv acceptance HomeCept

Eso no está relacionado con Yii2, sino con el hecho de que a Ceptsolo contiene una prueba, pero Cestpuede contener varias pruebas; consulte la pregunta inicial
Oliver Hader

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.