Как я могу запустить только один тест из пакета?

У меня есть этот тестовый класс ниже, и я хочу запустить только один тест из него, например, «aboutPage». Есть идеи как?

Вот как я запускаю только этот файл:

codecept run tests/acceptance/VisitorCest.php

Но теперь я хочу запустить только один тест из файла.

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

person Tzook Bar Noy    schedule 01.08.2014    source источник


Ответы (8)


Вы просто добавляете двоеточие и имя функции, например:

codecept run tests/acceptance/VisitorCest.php:myTestName

или более короткая версия:

codecept run acceptance VisitorCest:myTestName

(Обратите внимание на пробел между именем пакета и именем файла.)

person Tzook Bar Noy    schedule 02.08.2014
comment
просто заметка. вы не можете запустить отдельный тест, если это модульный тест (расширенный из PHPUnit_Framework_TestCase), поскольку codeception не имеет фильтра опция (в отличие от phpunit) - person coviex; 10.07.2015
comment
codecept run unit/TestThatExtendsPHPUnit.php:testMethod отлично работает для меня. - person mike.pj; 11.12.2015
comment
Вы можете опустить расширение имени файла .php, например: codecept run -- -c frontend unit models/ContactFormTest:testSendEmail - person jlapoutre; 15.11.2016
comment
myTestName также не обязательно должно быть полным именем теста. Он будет запускать любые тесты с частичным совпадением - person andrewtweber; 07.06.2019
comment
Как я могу работать с зависимостями? - person Diogo Alves; 04.06.2020

вот что работает:

codecept run {suite-name} {file-name}.php:{function-name}

обратите внимание на пробел между именем пакета и именем файла

person Mahmoud Zalt    schedule 21.10.2014
comment
технически у вас есть более общее решение. но, как доказано, большинству людей больше нравятся примеры. - person iGbanam; 13.12.2014
comment
Не нужна часть .php. - person tivnet; 23.02.2015
comment
@tivnet Это верно только для Codeception 2.x - person conceptdeluxe; 15.07.2015

В дополнение к ответу, предоставленному @Tzook Bar Noy, вы можете добавить конечный $, когда есть несколько тестов, начинающихся с одного и того же имени. Рассмотрим следующий пример:

<?php

use \AcceptanceTester;

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

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

Где следующая команда выполнит оба теста:

codecept run tests/acceptance/VisitorCest.php:aboutPage

Это выполнит только первый:

codecept run tests/acceptance/VisitorCest.php:aboutPage$
person conceptdeluxe    schedule 15.07.2015

Более правильным способом сделать это будет назначение групповой аннотации рассматриваемому тестовому набору. Это предпочтительно по следующей причине; Если у вас есть два тестовых примера, например, в одном и том же классе VisitorCest;

public function aboutPage
public function aboutPage2

выполнение

codecept run tests/acceptance/VisitorCest.php:aboutPage

запустит оба тестовых примера VisitorCest:aboutPage и VisitorCest:aboutPage2.

Назначьте группу тестовому набору, подобному этому

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

И выполните этот конкретный тестовый пример следующим образом

codecept run -g aaa

person Akongnwi Devert    schedule 25.01.2019

В дополнение к предыдущим ответам вы можете запустить один или несколько методов, сгруппировав их по заданному имени:

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

Используйте опцию -g и название группы:

$ codecept run acceptance VisitorCest -g test-aboutPage
person Igor Parra    schedule 18.05.2016
comment
Я бы предпочел немного другой способ, так как в этом случае вы можете использовать вкладку и легко перейти к нужному Cest, `codecept runtests/acceptance/VisitorCest -group test-aboutPage` - person Stipe; 18.04.2017

это то, что я делаю. php codecept.phar run unit UnitNameTest.php

person Yann叶    schedule 16.01.2015
comment
Не имеет отношения к заданному вопросу - person tivnet; 23.02.2015

Если вы используете PHP Yii2 Framework, вы можете запустить только один тест с помощью этой команды.

Убедитесь, что вы находитесь в каталоге тестов.

cd /codeception/frontend

codecept run -vv acceptance HomeCept
person Muhammad Shahzad    schedule 28.05.2016
comment
Это связано не с Yii2, а с тем фактом, что Cept содержит только один тест, а Cest может содержать несколько тестов - см. исходный вопрос. - person Oliver Hader; 06.12.2016

Попробуйте phpunit --filter {TestMethodName} {FilePath}

person atul_systematix    schedule 13.12.2016