Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

установить зависимости в одном тесте с датапровайдером

codeception
php
Теги: #<Tag:0x00007fedc7b0df30> #<Tag:0x00007fedc7b0ddf0>

(Cherrish) #1

В тесте проводятся манипуляции с данными из провайдера. Задача: внутри одного теста при неудачной работе одного блока данных, тесты с последующими данными провайдера не должны запускаться.

Я попытался сделать: использовать @depends - работает только с отдельными методами, а у меня один - doSteps (см. код ниже). Есть разбивать на отдельные мелкие классы и обращаться к их методам в отдельном, то можно ли вставить зависимость от метода конкретного класса и насколько это грамотно с точки зрения разработки кода (тестов)?

Код

...
   
    /**
     * @dataprovider pageProvider
     */
    public function staticPages(Tester $I, \Codeception\Example $example)
    {
        $I->doSteps($example['firstStep'],$example['secondStep']);

    }

    /**
     * @return array
     */
    protected function pageProvider()
    {  return
        [
            [       'firstStatus'=>"Зашел", 
		    'secondStatus'=>"Дошел"  ] ,
            
            [       'firstStatus'=>"Дошел", 
		    'secondStatus'=>"Вышел"  ] 
	]
    }

#2

Я на сколько понял по документации должно быть так:

/**
 * @dataprovider pageProvider
 */
public function staticPages(Tester $I, \Codeception\Example $example)
{
    $I->doSteps($example['firstStep'],$example['secondStep']);

}

/**
 * @return array
 */
protected function pageProvider()
{  return
    [
        ['firstStep'=>"Зашел", 
	  'secondStep'=>"Дошел"] ,
        
        ['firstStep'=>"Дошел", 
	  'secondStep'=>"Вышел"] 
    ];
}

(Cherrish) #3

спасибо за коррекцию =). При этом синтаксисе наборы данных независимы - если один тест упал, следующий будет выполняться - проверено. Мне же нужно, чтобы последовательного прохождения всего остального датапровайдера (наборы N+1) не было при условии падения N-ного теста. Как это можно сделать, подскажите, пожалуйста?


(Vatslau) #4

если нужно проверить фейл теста и скипнуть остальные
первое что приходит на ум лиснеры и проверять в бефор метод

  • если фейлов нет - запустить тест
  • если был фейл - скип екцепшен