Bir paketten nasıl yalnızca bir test çalıştırabilirim?


87

Aşağıda bu test sınıfım var ve ondan yalnızca bir test çalıştırmak istiyorum, örneğin "aboutPage". Nasıl bir fikriniz var?

Sadece bu dosyayı şu şekilde çalıştırıyorum:

codecept run tests/acceptance/VisitorCest.php

Ama şimdi dosyadan yalnızca bir test çalıştırmak istiyorum.

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

Yanıtlar:


142

Basitçe iki nokta üst üste ve işlev adını şu şekilde ekleyin:

codecept run tests/acceptance/VisitorCest.php:myTestName

veya daha kısa bir versiyon:

codecept run acceptance VisitorCest:myTestName

(Paket adı ve dosya adı arasındaki boşluğa dikkat edin.)


sadece bir not. eğer bu bir tek testini koşamam ünite (uzanan testi PHPUnit_Framework_TestCase gibi) codeception hiçbir sahiptir filtre (aksine seçeneği PHPUnit )
coviex

3
codecept çalıştırma birimi / TestThatExtendsPHPUnit.php: testMethod benim için gayet iyi çalışıyor.
mike.pj

4
.phpDosya adı uzantısını şu şekilde atlayabilirsiniz :codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

1
myTestNametam test adı olmak zorunda değildir. Kısmi eşleşmeli tüm testleri çalıştıracak
andrewtweber

Bağımlılıklarla nasıl çalışabilirim?
Diogo Alves

40

bu işe yarayan şey:

kod çözücü çalıştırma {süit-adı} {dosya-adı} .php: {işlev-adı}

paket adı ve dosya adı arasındaki boşluğa dikkat edin


teknik olarak daha genel bir çözüme sahipsiniz. ancak kanıtlandığı gibi, çoğu insan bunun yerine örnekler görmeyi sever.
iGbanam

2
Parçaya ihtiyacım yok .php.
tivnet

2
@tivnet Bu yalnızca Codeception 2.x için geçerlidir
conceptdeluxe

22

Tarafından sağlanan cevap ek olarak @Tzook Bar Noy yapabilirsiniz bir sondaki eklemek $aynı adla başlar çoklu testler vardır . Aşağıdaki örneği düşünün:

<?php

use \AcceptanceTester;

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

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

Aşağıdaki komutun her iki testi de yürüteceği yer:

codecept run tests/acceptance/VisitorCest.php:aboutPage

Bu yalnızca ilk:

codecept run tests/acceptance/VisitorCest.php:aboutPage$

10

Bunu yapmanın daha uygun bir yolu, söz konusu test senaryosuna bir grup açıklaması atamak olacaktır. Bu, aşağıdaki nedenlerden dolayı tercih edilir; Örneğin aynı sınıfta VisitorCest'te iki test durumunuz varsa;

public function aboutPage
public function aboutPage2

Yürütme

codecept run tests/acceptance/VisitorCest.php:aboutPage

hem VisitorCest: aboutPage hem de VisitorCest: aboutPage2 test durumlarını çalıştırır.

Böyle bir test senaryosuna bir grup atayın

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

Ve bu özel test senaryosunu şu şekilde yürütün

codecept run -g aaa


5

Önceki cevaplara ek olarak, belirli bir isme göre gruplayarak bir veya birkaç yöntemi çalıştırabilirsiniz:

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

Seçeneği -gve grubun adını kullanın :

$ codecept run acceptance VisitorCest -g test-aboutPage

Ben biraz daha farklı bir yol tercih ederim, çünkü bu durumda sekme yapabilir ve istediğiniz Cest'e kolayca gidebilirsiniz, kodecept çalıştırma testleri / kabul / ZiyaretçiCest -grup testi hakkındaSayfa`
Stipe


1

Eğer kullanıyorsanız PHP Yii2 Framework, bu komutu kullanarak sadece bir test çalıştırabilirsiniz.

Testler dizininde olduğunuzdan emin olun.

cd /codeception/frontend

codecept run -vv acceptance HomeCept

Bu, Yii2 ile ilgili değil Cept, bir testin yalnızca bir test içermesi , ancak a'nın Cestbirden fazla test içerebilmesi gerçeğiyle ilgilidir - ilk soruya bakın
Oliver Hader

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.