t.me/atinfo_chat Telegram группа по автоматизации тестирования

Определить тест, который упал в @dataProvider

codeception
test-data
dataprovider
php
Теги: #<Tag:0x00007f21d39839a0> #<Tag:0x00007f21d39837e8> #<Tag:0x00007f21d39836a8> #<Tag:0x00007f21d3983568>

(Shine) #1

В тестах используется @dataProvider (подставляются наборы данных)
Как определить на каком наборе завалился тест?


(Denys Shynkarenko) #2

каждый прогон теста включает тест дату, как args


(Shine) #3

Могли бы написать пример как вывести данные из args, при падении теста?


(Denys Shynkarenko) #4

гляньте например сюда - https://www.google.com/amp/s/howtodoinjava.com/testng/testng-dataprovider/amp/

PASSED: testMethod("data one")
PASSED: testMethod("data two")

В TestNG уже реализован этот функционал, вам не нужно чтото добавлять


(Shine) #5

Это классно… но только у меня тесты на php, а не на java (


(Shine) #6

Вот пример моего теста:

3- и прогона, как определить, какой упал?

    // TODO Способ связи
    /**
     * Способ связи
     * @dataProvider setFeedback
     */
    public function feedback(\Page\Petshop $petshop, \Codeception\Example $example, \AcceptanceTester $I) {
        $artNum = $example['prod']::ART_NUMBER;
        $feedback = $example['feedback'];
        $city = $example['city'];
        $date = $example['date'];
        $up = $example['up'];

        //TODO Предусловия
        //1. Устанавливаем дату
        $I->setDate($date);

        //Устанавливаем город
        $petshop->сity($city);

        // 1. В корзину добавлен товар
        $product = $petshop->find($artNum);
        $product->addInBasket();

        // 2. Открыта корзина
        $basket = $petshop->openBasket();

        /** @var \Page\ProductBasket $productInBasket */
        $prodBasket = $basket->getProduct($artNum);
        // Количество шт одного товара
        $prodBasket->spinnerUp($up);

        // 3. Нажата кнопка Оформить заказ
        $order = $basket->regOrder();

        // 4. Способ связи
        $order->feedback($feedback);

        $I->checkFeedback($I, $order, $example);

        //TODO ПОСТУСЛОВИЯ

        //Устанавливаем текущую дату
        $I->resetDate();
    }

    /**Способ связи
     * */
    protected function setFeedback()
    {
        return [
            //TODO Обычная доставка
            [
                'prod' => self::PROD1, 'feedback' => ORDER::FEEDBACK_CALL,
                'date' => '2019-02-01 19:00:00', 'city' => 'Санкт-Петербург', 'up' => 0
            ],
            [
                'prod' => self::PROD1, 'feedback' => ORDER::FEEDBACK_SMS,
                'date' => '2019-02-01 19:00:00', 'city' => 'Санкт-Петербург', 'up' => 0
            ],
            [
                'prod' => self::PROD1, 'feedback' => ORDER::FEEDBACK_CALL_DURING_TWO_HOURS,
                'date' => '2019-02-01 23:30:00', 'city' => 'Санкт-Петербург', 'up' => 0
            ],
        ];
    }