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

3 minutos de lectura

avatar de usuario
Tzook Bar Noy

Tengo esta clase de prueba a continuación, y quiero ejecutar solo una prueba, 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');
    }
}

avatar de usuario
Tzook Bar Noy

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 unidad prueba (extendido de PHPUnit_Framework_TestCase) como codecepción no tiene filtrar opción (a diferencia de unidad php)

    – coviex

    10 de julio de 2015 a las 11:59


  • codecept run unit/TestThatExtendsPHPUnit.php:testMethod funciona bien para mí.

    – mike.pj

    10 de diciembre de 2015 a las 21:15

  • Puede omitir el .php extensión de nombre de archivo, así: codecept run -- -c frontend unit models/ContactFormTest:testSendEmail

    – jlapoutre

    15 de noviembre de 2016 a las 10:48


  • myTestName tampoco tiene que ser el nombre completo de la prueba. Ejecutará cualquier prueba con una coincidencia parcial

    – andrewtwweber

    6 jun 2019 a las 21:31

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

    – Diogo Alves

    4 de junio de 2020 a las 16:58

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 demostró, a la mayoría de las personas les gusta ver ejemplos.

    – Igbanam

    13 de diciembre de 2014 a las 14:39

  • no necesita el .php parte.

    – tivnet

    23 de febrero de 2015 a las 19:05

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

    – concepto de lujo

    15 de julio de 2015 a las 14:31

Además de la respuesta proporcionada por @Tzook Bar Noy puedes 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$

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.

Asigne un grupo a un caso de prueba como este

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

Y ejecutar este caso de prueba en particular como este

codecept run -g aaa

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

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

Usa la opción -g y 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 run tests/acceptance/VisitorCest -group test-aboutPage`

    – Estípite

    17/04/2017 a las 21:12


avatar de usuario
Yann叶

esto es lo que hago.

php codecept.phar run unit UnitNameTest.php

  • Preferiría una forma ligeramente diferente, ya que puede tabular en ese caso y navegar fácilmente a un Cest deseado, `codecept run tests/acceptance/VisitorCest -group test-aboutPage`

    – Estípite

    17/04/2017 a las 21:12


avatar de usuario
Muhammad Shahzad

Si estás usando PHP Yii2 Frameworksolo puede ejecutar una prueba con este comando.

Asegúrate 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 un Cept sólo contiene una prueba, pero una Cest puede contener múltiples pruebas – ver la pregunta inicial

    –Oliver Hader

    06/12/2016 a las 12:30


¿Ha sido útil esta solución?