2018-06-10

Как перестать думать и прикрутить ДатаПул к тестам.

Есть вот такая штука - ДатаПул. Вроде бы полезная и примеры есть прямо в местележания, но как-то непонятно с чего начать прикручивать и как использовать.

Допустим есть тесты. Все из себя на Джаве + ТестНГ + мавен + что-нибудь ещё. Приступим:
1. Добавить зависимость
  
 com.griddynamics.qa.datapool
 data-pool
 1.0.1

Версию конечно же нужно проставить актуальную на текущий момент.

2. Создать/найти пакет entities (или что-то подобное) . Допуская, что нам нужны данные тестовых пользователей добавляем что-то вроде
package ru.test.automation.entities;

import com.griddynamics.qa.datapool.DataTypeFactory;
import com.griddynamics.qa.datapool.datatype.IDataType;

/**
 * Represents a BitBucketUser entity.
 */
public interface BitBucketUser extends IDataType {
    static BitBucketUser newUser(){
        return DataTypeFactory.create(BitBucketUser.class);
    }

    Integer getId();
    String getLogin();
    String getPassword();
}

Поля у объекта конечно же могут быть и не такими.

3. Создать/найти директорию /resources/data и добавить туда собственно файл с данными

!DataTypeKey 'interface ru.test.automation.entities.BitBucketUser':
!IDataType {id: 1, login: Uzvr_Odin, password: Klu4slovo}
!IDataType {id: 2, login: uzvr-Dva, password: derParrollen}
!IDataType {id: 3, login: uzvr-Tri, password: AEtoKto?}

Пусть этот файл зовётся ls.yml

4. Наверняка в тестах есть какой-нибудь BaseTest, туда можно-нужно-стоит добавить

import ru.test.automation.entities.BitBucketUser;
import com.griddynamics.qa.datapool.DataPool;

import static com.griddynamics.qa.datapool.FilterCriterion.by;
import static com.griddynamics.qa.datapool.matchers.StandardMatchers.CONTAINS;

...

@BeforeSuite
protected void loadData() {
    ClassLoader classLoader = getClass().getClassLoader();
    DataPool.load(Paths.get(classLoader.getResource("data/ls.yml").getPath()));
    // TODO: Switch to the approach below when Data-pool 1.0.2 is released.// DataPool.load("data/ls.yml");
}

//TODO: Think about moving into a separate data-access class.
protected BitBucketUser getUserByLogin(String partOfLoginName) {
    return DataPool.find(BitBucketUser.class, by("login", CONTAINS, partOfLoginName)).get(0);
}

5. И наконец! В нужном месте, в нужном тесте можно сделать так

BitBucketUser usr = getUserByLogin("Uzvr_Odin");
loginPage().login(usr.getLogin(), usr.getPassword());




Комментариев нет:

Отправить комментарий