Làm cách nào để chỉ chạy một bài kiểm tra từ một bộ phần mềm?


85

Tôi có lớp kiểm tra này bên dưới và tôi chỉ muốn chạy một bài kiểm tra từ nó, ví dụ: "aboutPage". Bất kỳ ý tưởng làm thế nào?

Đây là cách tôi chỉ chạy tệp này:

codecept run tests/acceptance/VisitorCest.php

Nhưng bây giờ tôi chỉ muốn chạy một bài kiểm tra từ tệp.

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

Câu trả lời:


140

Bạn chỉ cần thêm dấu hai chấm và tên hàm, như sau:

codecept run tests/acceptance/VisitorCest.php:myTestName

hoặc phiên bản ngắn hơn:

codecept run acceptance VisitorCest:myTestName

(Chú ý khoảng cách giữa tên-bộ và tên-tệp.)


chỉ là một ghi chú. bạn không thể chạy một thử nghiệm duy nhất nếu nó là một đơn vị kiểm tra (kéo dài từ PHPUnit_Framework_TestCase ) như codeception không có bộ lọc tùy chọn (không giống như phpunit )
coviex

3
codecept run unit / TestThatExtendsPHPUnit.php: testMethod hoạt động tốt đối với tôi.
mike.pj

4
Bạn có thể bỏ qua .phpphần mở rộng tên tập tin, như thế này:codecept run -- -c frontend unit models/ContactFormTest:testSendEmail
jlapoutre

myTestNamecũng không cần phải là tên thử nghiệm đầy đủ. Nó sẽ chạy bất kỳ bài kiểm tra nào với một trận đấu một phần
andrewtweber

Làm cách nào tôi có thể chạy với các phụ thuộc?
Diogo Alves

39

đây là những gì hoạt động:

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

chú ý khoảng cách giữa tên-bộ và tên-tệp


về mặt kỹ thuật, bạn có giải pháp chung hơn. nhưng như đã được chứng minh, hầu hết mọi người thích xem các ví dụ thay thế.
iGbanam

2
Không cần .phpmột phần.
tivnet 23/02/15

2
@tivnet này chỉ đúng đối với Codeception 2.x
conceptdeluxe

21

Ngoài câu trả lời được cung cấp bởi @Tzook Bar Noy, bạn có thể thêm dấu vào $khi có nhiều bài kiểm tra bắt đầu bằng cùng một tên . Hãy xem xét ví dụ sau:

<?php

use \AcceptanceTester;

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

    public function aboutPageOption(AcceptanceTester $I)
    { 
    }
}

Trường hợp lệnh sau sẽ thực hiện cả hai kiểm tra:

codecept run tests/acceptance/VisitorCest.php:aboutPage

Điều này sẽ chỉ thực thi đầu tiên:

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

9

Một cách thích hợp hơn để thực hiện việc này là gán một chú thích nhóm cho trường hợp thử nghiệm được đề cập. Điều này thích hợp hơn vì lý do sau; Ví dụ: nếu bạn có hai trường hợp kiểm tra trong cùng một lớp VisitorCest;

public function aboutPage
public function aboutPage2

Đang thực thi

codecept run tests/acceptance/VisitorCest.php:aboutPage

sẽ chạy cả hai trường hợp kiểm tra VisitorCest: aboutPage và VisitorCest: aboutPage2.

Chỉ định một nhóm cho một trường hợp thử nghiệm như thế này

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

Và thực hiện trường hợp thử nghiệm cụ thể như thế này

codecept run -g aaa


5

Ngoài các câu trả lời trước, bạn có thể chạy một hoặc một số phương pháp bằng cách nhóm theo tên đã cho:

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

Sử dụng tùy chọn -gvà tên của nhóm:

$ codecept run acceptance VisitorCest -g test-aboutPage

Tôi muốn cách khác hơn một chút, vì bạn có thể lập tab trong trường hợp đó và dễ dàng điều hướng đến Cest mong muốn, `codecept run tests / accept / VisitorCest -group test-aboutPage`
Stipe

2

đây là những gì tôi làm. php codecept.phar run unit UnitNameTest.php


Không liên quan đến câu hỏi được hỏi
tivnet

1

Nếu bạn đang sử dụng PHP Yii2 Framework, thì bạn chỉ có thể chạy một bài kiểm tra bằng lệnh này.

Đảm bảo rằng bạn đang ở trong thư mục kiểm tra.

cd /codeception/frontend

codecept run -vv acceptance HomeCept

Điều đó không liên quan đến Yii2, nhưng thực tế là a Ceptchỉ chứa một bài kiểm tra, nhưng a Cestcó thể chứa nhiều bài kiểm tra - hãy xem câu hỏi ban đầu
Oliver Hader

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.