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

Как заставить работать DataProvider и @BeforeClass вместе


(gam) #1

Возникла необходимость создать несколько тестов которые будут создавать прекондишены для выполнения сьюта. 

В дата провайдере есть вся необходимая для этих тестов информация. 

Чтобы подключить дата провайдер к методу, его нужно обозначить как @Test(dataprovider=блабла). Но в моей ситуации мне нужно обозначить метод как @BeforeClass и если я добавлю к нему еще @тест, то он будет выполняться 2 раза. 

К тому же он вобще не будет выполняться (это внезапно вторая проблема) т.к. @BeforeClass исполняется раньше чем инициализируется @DataProvider. 

 

Есть-ли возможность, впринципе, использовать DDD в прекондишенах?


(d3unka) #2

Немного не понятем вопрос. Если вам нужны pre-conditions, создайте метод setUp с аннотацией @BeforeMethod(alwaysRun=true). А тест уже будет запускаться со своей аннотацией @Test(dataProvider="data"). BeforeClass вам не подойдет, так как запустится единажды перед созданием класса. 


(gam) #3

@BeforeMethod будет исполнятся перед каждым тестом, а мне нужно один раз перед классом. Другими словами, перед исполнением сьюта необходимо проходить небольшой флоу.


(d3unka) #4

Напишите примеры кода, что вы пытаетесь сделать


(gam) #5
public class FacilitySuite extends BaseTest {

        @BeforeClass(dataProviderClass = TestData.class, dataProvider = "importNewFacility")
        public void importFacility(FacilityTestData facilityData) throws Exception {
            login(UserTypes.Admin, UserTypes.PASSWORD);
            FacilityHelper.ImportFacility(facilityData);
        }
        
        @Test(dataProviderClass = TestData.class, dataProvider = "somedata")
         public void test1 (){}

    }

(gam) #6

редактор сообщений жесть конечно.


(Mykhailo Poliarush) #7

после последнего обновления системы слетел редактор, сегодня починим


(gam) #8

промахнулся мимо ветки. код ниже