РЕСТ-уверен с 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 .