Pull to refresh

Comments 19

Интересно, работает ли с нестандартными кодами статусов (601, 999 и так далее)? Пробовал с мобильного браузера зайти, она как будто бы отдает 500 Internal Server Error на такое.

API разрабатывалось с опорой на стандартные коды HTTP. Но это поправимо. Если вы пишете этот комментарий, значит, вероятно, обработка нестандартных кодов статусов тоже должна быть предусмотрена, так? Это поправимо, но есть ли смысл?...

Мне кажется, или вы изобрели велосипед, аналогичный пресловутому 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? вдруг в сборке баг и всё ляжет?)

Ну тогда, во-первых, лучше поднять свой сервис на хостинге, а не зависеть от httpme.tk который вы можете вырубить когда захотите или он может тупо лечь, если все начнут им пользоваться.

А что, если нужно проверить именно «не у себя» и именно через интернет?

Поясните, пожалуйста, чем сервис локальный будет отличаться от сервиса в интернете? Что вы хотите проверить?

С функциональной точки зрения — ничем. Хостинг у меня свой, я его стерегу как зеницу ока ибо там и мои проекты, в т.ч. не мои, за размещение которых я плачу.


С функциональной точки зрения локальный сервис не будет отличаться ничем. На основе ваших комментариев, у меня появилась идея, и я хотел бы, чтобы вы оценили её полезность. Можно добавить возможность быстрого развёртывания моего веб-приложения как локальный сервис. Чтобы в случае необходимости тестирования blackbox API разработчик мог быстро установить и поднять мой сервис во внутренней корпоративной сети, например? или просто на localhost.

Часто бывает нужно обработать не только определенный ошибочный статус — код, но еще и сам ответ от сервера. Например, из ответа получить message и показать его или же что-то другое с ним сделать. Было бы интересно еще научиться по api генерировать специфичное тело ответа

К примеру, передавать post('http://httpme.tk/403'), а в body запроса тело вроде {«message»: «error»}, которое и вернется в ответе

Думаю, я внесу эту правку. Спасибо!

UFO just landed and posted this here
Два предложения по расширению:
1. Уметь отвечать с заданной задержкой (в том числе практически бесконечной)
2. В больших корпорациях доступ к Интернету всё сильнее ограничиваетя. Получить доступ к Вашему и подобным серверам может быть сложно. Хорошо бы иметь возможность просто устанавливать такой сервер как proxy на десктопе разработчика,

Спасибо, я работаю над сервисом, учту ваши пожелания.

Sign up to leave a comment.

Articles