
postman2pytest: как превратить Postman-коллекцию в pytest-набор за одну команду
golikovichev 16 минут назад postman2pytest: как превратить Postman-коллекцию в pytest-набор за одну команду Простой 5 мин 336 Тестирование IT-систем * Python * Тестирование веб-сервисов * Open source * Из...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. golikovichev 16 минут назад postman2pytest: как превратить Postman-коллекцию в pytest-набор за одну команду Простой 5 мин 336 Тестирование IT-систем * Python * Тестирование веб-сервисов * Open source * Из песочницыПеревод Автор оригинала: Mikhail Golikov Вот есть Postman-коллекция из 40 запросов. Разложена по папкам, и с тестовыми скриптами, которые проверяют статус-коды. Вы потратили на неё время, она хороша.
И ещё у вас есть CI-пайплайн, который про Postman никогда не слышал и слышать не собирается. Эти две вещи мирно сосуществовали месяцами, потому что никто не хочет быть тем человеком, который вручную переписывает 40 запросов в pytest-функции. Newman, конечно, есть, но Newman гоняет тесты, а не генерирует код, который можно прочитать, отредактировать и нормально положить в систему контроля версий.
Технические детали
Получается, коллекция документирует API. Они описывают одну и ту же систему и при этом никогда не встречались. Я написал postman2pytest, чтобы их познакомить.
(мы) Одна командаpip install postman2pytest postman2pytest \ --collection my_api. json \ --out tests/test_api. py BASE_URL= pytest tests/test_api.
py -v На выходе — обычный Python, который читается, редактируется и кладётся в git. Никакого framework lock-in. Никакой runtime-обёртки.
Отраслевые последствия
Просто сгенерированный Python-код. Как выглядит результатДопустим, в Postman-коллекции есть папка Users с запросом POST /api/v1/users и тестовым скриптом, проверяющим статус 201:def test_users_post_create_user(): """POST ENV_base_url/api/v1/users (users)""" url = f"{BASE_URL}/api/v1/users" headers = { "Content-Type": "application/json", "Authorization": f" ", } body = json. loads('{"name": "John Doe", "email": "john@example.
com"} response = requests. post(url, headers=headers, json=body) assert response. status_code == 201, ( f"Expected 201, : {response.
text} Несколько моментов, на которые стоит обратить внимание. Имена папок попадают в имена функций. Create user внутри Users превращается в test_users_post_create_user.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





