Як я можу запустити лише один тест із набору?


85

У мене є цей тестовий клас нижче, і я хочу виконати з нього лише один тест, наприклад "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 ), оскільки кодекція не має опції фільтра (на відміну від phpunit )
coviex

3
codecept run unit / TestThatExtendsPHPUnit.php: testMethod добре працює для мене.
mike.pj

4
Ви можете опустити .phpрозширення імені файлу, наприклад:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

myTestNameтакож не повинно бути повною назвою тесту. Він буде проводити будь-які тести з частковим збігом
andrewtweber

Як я можу також працювати із залежностями?
Діого Алвес,

39

ось що працює:

codecept запустити {suite-name} {file-name} .php: {function-name}

зверніть увагу на пробіл між назвою набору та іменем файлу


технічно у вас є більш загальне рішення. але як доведено, більшості людей подобається бачити приклади.
iGbanam

2
Не потрібна .phpдеталь.
tivnet

2
@tivnet Це вірно лише для Codeception 2.x
conceptdeluxe

20

На додаток до відповіді, наданої @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$

9

Більш правильним способом цього буде призначення групової анотації для тестового випадку. Це переважно з наступних причин; Якщо у вас є два тести, наприклад, в одному класі 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, а з тим, що один Ceptмістить лише один тест, але Cestможе містити кілька тестів - див. Початкове запитання
Олівер Хадер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.