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