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

86

У меня есть этот тестовый класс ниже, и я хочу запустить из него только один тест, например 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');
    }
}
Тзук Бар Ной
источник

Ответы:

140

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

codecept run tests/acceptance/VisitorCest.php:myTestName

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

codecept run acceptance VisitorCest:myTestName

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

Тзук Бар Ной
источник
просто примечание. вы не можете запустить один тест, если это модульный тест (расширенный из PHPUnit_Framework_TestCase ), так как codeception не имеет опции фильтра (в отличие от phpunit )
coviex
3
codecept run unit / TestThatExtendsPHPUnit.php: testMethod отлично работает для меня.
mike.pj
4
Вы можете опустить .phpрасширение имени файла, например:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre
myTestNameтакже не обязательно должно быть полное имя теста. Он будет запускать любые тесты с частичным совпадением
Эндрютвебер
Как я могу работать и с зависимостями?
Диого Алвес,
39

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

codecept run {имя-набора} {имя-файла} .php: {имя-функции}

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

Махмуд Залт
источник
технически у вас есть более общее решение. но, как доказано, большинству людей нравится вместо этого видеть примеры.
iGbanam
2
Не нужна .phpдеталь.
tivnet
2
@tivnet Это верно только для Codeception 2.x
conceptdeluxe
21

В дополнение к ответу, предоставленному @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$
концепция
источник
10

Более правильный способ сделать это - назначить групповую аннотацию рассматриваемому тесту. Это предпочтительно по следующей причине; Если у вас есть два тестовых примера, например, в одном классе 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

Akongnwi Devert
источник
5

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

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

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

$ codecept run acceptance VisitorCest -g test-aboutPage
Игорь Парра
источник
Я бы предпочел немного другой способ, так как в этом случае вы можете использовать табуляцию и легко переходить к желаемому Cest, `codecept run tests / accept / VisitorCest -group test-aboutPage`
Stipe
2

это то чем я занимаюсь. php codecept.phar run unit UnitNameTest.php

Янн 叶
источник
Не имеет отношения к
заданному
1

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

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

cd /codeception/frontend

codecept run -vv acceptance HomeCept
Мухаммад Шахзад
источник
Это не связано с Yii2, а с тем фактом, что a Ceptсодержит только один тест, но Cestможет содержать несколько тестов - см. Исходный вопрос
Оливер Хейдер
-1

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

atul_systematix
источник