Рубрики
Без рубрики

РЕСТ-уверен с Groovy

Узнайте, как работать с REST-assured с помощью Groovy.

Автор оригинала: baeldung.

РЕСТ-уверен с Groovy

1. Обзор

В этом учебнике мы посмотрим на использование библиотеки, гарантированной REST, с Groovy.

Так как REST-assured использует Groovy под капотом, у нас действительно есть возможность использовать необработанный синтаксис Groovy для создания более мощных тестовых случаев. Вот где рамки действительно о жизни.

Для установки, необходимой для использования REST-уверены, проверить нашу предыдущую статью .

2. Api коллекции Groovy

Давайте начнем с краткого взгляда на некоторые основные концепции Groovy – с несколькими простыми примерами, чтобы снабдить нас только то, что нам нужно.

2.1. Метод findAll

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

def words = ['ant', 'buffalo', 'cat', 'dinosaur']

Давайте создадим еще одну коллекцию из вышеперечисленных со словами с длинами, которые превышают четыре буквы:

def wordsWithSizeGreaterThanFour = words.findAll { it.length() > 4 }

Вот, findAll () это метод, применяемый к коллекции с помощью закрытие применяется к методу. метод определяет, какую логику следует применять к коллекции и закрытие дает методу предикат для настройки логики.

Мы говорим Groovy, чтобы цикл через коллекцию и найти все слова, длина которых больше, чем четыре и вернуть результат в новую коллекцию.

2.2. Переменная

Неявная переменная это держит текущее слово в цикле. Новая коллекция словаСызеГреатерТанФур будет содержать слова буйволов и динозавр .

['buffalo', 'dinosaur']

Помимо findAll () , Есть и другие методы Groovy.

2.3. Соберите Итератор

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

def sizes = words.collect{it.length()}

Результат:

[3,7,3,8]

Мы используем сумма , как следует из названия, сложить все элементы в коллекции. Мы можем подвести итоги в размеры коллекция, как так:

def charCount = sizes.sum()

и результат будет 21, количество символов всех элементов в слова коллекция.

2.4. Операторы макс/мин

макс/мин операторы интуитивно названы, чтобы найти максимальное или минимальное число в коллекции:

def maximum = sizes.max()

Результат должен быть очевиден, 8.

2.5. Найти Итератора

Мы используем найти для поиска только одного значения коллекции, соответствующего предикату закрытия.

def greaterThanSeven=sizes.find{it>7}

Результат, 8, первое появление элемента коллекции, который соответствует предикату.

3. Проверить JSON с Groovy

Если у нас есть услуга в http://localhost:8080/odds , что возвращает список шансов наших любимых футбольных матчей, как это:

{
    "odds": [{
        "price": 1.30,
        "status": 0,
        "ck": 12.2,
        "name": "1"
    },
    {
        "price": 5.25,
        "status": 1,
        "ck": 13.1,
        "name": "X"
    },
    {
        "price": 2.70,
        "status": 0,
        "ck": 12.2,
        "name": "0"
    },
    {
        "price": 1.20,
        "status": 2,
        "ck": 13.1,
        "name": "2"
    }]
}

И если мы хотим проверить, что шансы со статусом больше, чем 1 имеют цены 1.20 и 5 0,25 , то мы делаем это:

@Test
public void givenUrl_whenVerifiesOddPricesAccuratelyByStatus_thenCorrect() {
    get("/odds").then().body("odds.findAll { it.status > 0 }.price",
      hasItems(5.25f, 1.20f));
}

То, что здесь происходит, это; мы используем синтаксис Groovy для загрузки массива JSON под ключ шансы . Так как он имеет более одного пункта, мы получаем коллекцию Groovy. Затем мы ссылаемся на найтиВсе метод на этой коллекции.

Предикат закрытия говорит Groovy создать другую коллекцию с объектами JSON, где статус больше нуля.

Мы заканчивают наш путь цена который говорит groovy создать еще один список только цены шансы в нашем предыдущем списке объектов JSON. Затем мы применяем имеетItems Hamcrest матч в этот список.

4. Проверка XML с Groovy

Допустим, у нас есть услуга в http://localhost:8080/teachers , что возвращает список учителей по их id , отдел и предметы учил, как ниже:


    
        math
        physics
    
    
        political education
        english
    

Теперь мы можем проверить, что учитель естественных наук вернулся в ответ учит как математике, так и физике:

@Test
public void givenUrl_whenVerifiesScienceTeacherFromXml_thenCorrect() {
    get("/teachers").then().body(
      "teachers.teacher.find { [email protected] == 'science' }.subject",
        hasItems("math", "physics"));
}

Мы использовали XML путь teachers.teacher чтобы получить список учителей по атрибуту XML, отдел . Затем мы называем найти метод в этом списке.

Наш предикат закрытия найти гарантирует, что мы в конечном итоге только с учителями из научный отдел. Наш XML-путь завершается в предмет ярлык.

Поскольку существует более чем один предмет, мы получим список, который мы проверяем с имеетItems Матчер Хэмкреста.

5. Заключение

В этой статье мы видели, как мы можем использовать библиотеку, гарантированную REST, на языке Groovy.

Полный исходный код статьи ознакомьтесь с нашими Проект GitHub .