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


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


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


1

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

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

cd /codeception/frontend

codecept run -vv acceptance HomeCept

Это не связано с Yii2, а с тем фактом, что a Ceptсодержит только один тест, но Cestможет содержать несколько тестов - см. Исходный вопрос
Оливер Хейдер

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.