Прямое и обратное преобразование JSON и XML в RestAssured.Net |
29.06.2023 00:00 |
Автор: Баз Дейкстра (Bas Dijkstra) В этой серии коротких статей я хочу поделиться рядом примеров использования RestAssured.Net для создания тестов REST/GraphQL API.
Все примеры из статьи можно найти на GitHub. ПреобразованиеПреобразование – это процесс создания JSON или XML-представления объекта C#. RestAssured.Net поддерживает и JSON, и XML, и в этой статье мы разберем примеры для обоих случаев. Для начала возьмем объект C#, представляющий собой пост в блоге: public class Post [JsonProperty("title")] [JsonProperty("body")] public Post() Теперь, чтобы создать JSON или XML-представление копии этого класса, можно применить разные подходы. К примеру, можно построить JSON или XML "вручную" – однако тут высок риск ошибок, и это довольно громоздкий способ. Мы также можем воспользоваться силой библиотек вроде Json.Net и System.Xml, чтобы переложить на них всю трудную работу. И именно это делает за вас RestAssured.Net – прямо из коробки. Если мы хотим отправить JSON-представление объекта "пост в блоге", нам нужно просто передать его копию в метод Body(): [Test] Given() Запустив этот тест и логируя запрос стандартным образом, мы увидим, что копия Post преобразована в содержимое JSON: { Успех! Кстати, это также работает с анонимными объектами: [Test] Given() Если мы хотим преобразовать наш объект не в JSON, а в XML, нам нужно задать заголовок запроса Content-Type как application/xml: [Test] В результате в конечную точку будет передано XML-содержимое: <Post xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> Обратное преобразованиеСодержимое ответов JSON или XML можно обратно трансформировать в сильно типизированные C#-объекты – такой процесс называется обратным преобразованием. В RestAssured.Net это делается при помощи метода As(): [Test] (Post)Given() Assert.That(myPost.Title, Is.EqualTo("sunt aut facere repellat provident occaecati excepturi optio reprehenderit")); Этот метод тоже работает и для JSON, и для XML. RestAssured.Net изучает значение заголовка ответа Content-Type и пытается преобразовать ответ в соответствии с этим значением – если значение заголовка не найдено, то по умолчанию это будет JSON. Вот и все, что я хотел сказать про прямое и обратное преобразование при работе с содержимым JSON и XML в запросах и ответах RestAssured.Net. В следующей статье серии мы разберемся, как извлекать и повторно использовать свойства запроса и значения ответов, а также рассмотрим различные механизмы авторизации API, поддерживаемые RestAssured.Net. |