Comments 19
http://httpme.tk/418 отрабатывает. Так и запишем
Интересно, работает ли с нестандартными кодами статусов (601, 999 и так далее)? Пробовал с мобильного браузера зайти, она как будто бы отдает 500 Internal Server Error на такое.
MagicMock
? Если вы тестируете black-box обработчик API, то у него должна быть инверсия зависимостей, банально что-нибудь вроде api = MyApi(url='http://prod-server.com')
. Если так, то ни мокнуть ответы не получится (точнее, получится, если мокать низкоуровневый request, но это уже детали реализации, которые не хотелось бы тестировать), ни ваш подход не подойдет (потому что апишка не будет звать ваштестсервер.ру/500, она будет звать адреса эндпоинтов). Но если диалог с разработчиками был построен, то, быть может, реализована еще одна ступень декомпозиции:
backend = BackendServer(url='http://prod-server.com'); api = MyApi(backend=backend )
, и тут уже все просто — чтобы простестить API, достаточно мокнуть целиком backend с известным интерфейсом, и уже смотреть на то, как обработчик MyAPI себя будет вести, когда ваш мокнутый бекенд будет возвращать ерунду.То, что вы считаете поводом для критки — является плюсами)
Поднимать локальный сервис или искусственно моделировать запросы используя функционал своего фреймворка — можно, эффект такой же. А что, если нужно проверить именно "не у себя" и именно через интернет? Если вы тестируете обёртку внешнего API, я бы пользовался внешними сервисами для тестов.
Логика "избегать внешних сервисов дабы не упали тесты" объективна, но… А почему вы cloudflare используете? вот у него сервера упали и всё легло? а php? вдруг в сборке баг и всё ляжет?)
А что, если нужно проверить именно «не у себя» и именно через интернет?
Поясните, пожалуйста, чем сервис локальный будет отличаться от сервиса в интернете? Что вы хотите проверить?
С функциональной точки зрения — ничем. Хостинг у меня свой, я его стерегу как зеницу ока ибо там и мои проекты, в т.ч. не мои, за размещение которых я плачу.
С функциональной точки зрения локальный сервис не будет отличаться ничем. На основе ваших комментариев, у меня появилась идея, и я хотел бы, чтобы вы оценили её полезность. Можно добавить возможность быстрого развёртывания моего веб-приложения как локальный сервис. Чтобы в случае необходимости тестирования blackbox API разработчик мог быстро установить и поднять мой сервис во внутренней корпоративной сети, например? или просто на localhost.
К примеру, передавать post('http://httpme.tk/403'), а в body запроса тело вроде {«message»: «error»}, которое и вернется в ответе
https://postman-echo.com/status/500
А ещё там есть богатая документация и разные методы, не только возврат status codes (например вернуть текущий ip, или сделать delay и т.п.).
http://httpbin.org/status/500/anything/anything
ему бы цены не было
1. Уметь отвечать с заданной задержкой (в том числе практически бесконечной)
2. В больших корпорациях доступ к Интернету всё сильнее ограничиваетя. Получить доступ к Вашему и подобным серверам может быть сложно. Хорошо бы иметь возможность просто устанавливать такой сервер как proxy на десктопе разработчика,
API для генерации ответов сервера с любыми кодами статусов