C
Code for Bro
@codeforbro9 подп.
22просмотров
15 мая 2024 г.
questionScore: 24
Как взглянуть на композицию функций по другому? Представим, у нас есть http запрос, который с сервера возвращает JSON и нам надо этот json проверить в рамках тестирования и получить конкретные данные из него. Предположим, что конвейер будет такой: request | expect | get_data Такую конструкцию можно изобразить с помощью декоратора Python: - Внизу будет функция show_data_from_server_by_id, которая будет принимать объект HTTP клиента и идентификатор объекта и возращать JSON. - Следующий декоратор expect принимает в качестве аргумента представление JSON, которое должно прийти с сервера, т.к. часть данных динамическая и может от запроса к запросу меняться, то именованный аргумент patched_paths принимает список JsonPath, которые описывают какие пути будут меняться. После исполнения функцию show_data_from_server_by_id проверяет JSON на наличие равенство с ожидаемым JSON и если есть проблемы сообщает о них. Возвращает проверяемый JSON дальше. - И в самом верху будет декоратор get_data, который принимает JsonPath, который описывает какие данные из JSON нужно достать и вернуть. После исполняет функцию обёрнутую expect и достаёт нужные данные и уже возвращает их. Сам код: @get_data("data.object") @expect( { "data": { "object": { "id": ..., "name": "Test name", "version": 0, "used_in_tasks": [], "subOject": { "subname": "Test subname", "body": "Test body", "useSomeFeature": False, "someFeature": None, } } } }, patched_paths=[ "data.object.id", "data.object.subOject.subname", ] ) def show_data_from_server_by_id(client, id_): return client.make_get_request( "/api/show-data-by-id", params={ "id": id_, }, )
22
просмотров
1916
символов
Нет
эмодзи
Нет
медиа

Другие посты @codeforbro

Все посты канала →