Size: a a a

testing_in_python

2019 February 07

СС

Сказочный Сникерс in testing_in_python
как это сделать с помощью этого инструмента мне не понятно)
источник

VK

Victor Kaplunov in testing_in_python
betzy
можно поднять жсон сервер https://github.com/typicode/json-server
быстро, легко, подставляя жсон реквесты которые тебе надо
Ага, похожая штука, но я выбрал Mountebank, поскольку мне еще и SMTP тестить надо было.
источник

VK

Victor Kaplunov in testing_in_python
Внешнее API создается REST-запросом (POST с JSON) из Setup теста.  Насчет просмотра запросов: я смотрел в своем debug-proxy, поскольку пролжение было поднято локально. А вообще там есть http://www.mbtest.org/docs/api/proxies#proxy-modes - насколько я понимаю он для этого.
источник

NV

Nikita Vandyshev in testing_in_python
Я не сильно знаком с моками, но вопрос такой.
Чем отличаются ваши решения от  mock.unittest?
Сервисы из вне а мокс.тест на вашей стороне?
источник

VK

Victor Kaplunov in testing_in_python
Я не знаю, чем они отилчаются. Для этого мне надо еще и  mock.unittest изучить надо.
источник

СС

Сказочный Сникерс in testing_in_python
unittest.mock это же вообще не про то, не?
источник

NV

Nikita Vandyshev in testing_in_python
Ну я вот и хочу услышать от вас в чем разница? =)
источник

VK

Victor Kaplunov in testing_in_python
Я дума, ответ есть в статье на Habr.
источник

СС

Сказочный Сникерс in testing_in_python
Nikita Vandyshev
Ну я вот и хочу услышать от вас в чем разница? =)
Изначальный вопрос был про мокированиие внешнего АПИ. Мокировать внешнее АПИ можно написав это АПИ самому
источник

СС

Сказочный Сникерс in testing_in_python
внешнее = АПИ в которое будет ходить ваше приложение, а не вы в своих тестах. и делается обычно тогда, когда либо нет возможности тянуть внешнее апи, либо оно очень огромное, что еще и его поднимать со всей его логикой не целесообразно. при этом нужно проверять что приложение верно ходит в это АПИ. имхо самый верный вариант реализовать это рядом с тестами, чтобы все было в одном контексте
источник

NV

Nikita Vandyshev in testing_in_python
Понял, спасибо =) стало понятнее
источник

СС

Сказочный Сникерс in testing_in_python
Мое решение позволяет динамически делать все что угодно с моками + его кастомизировать на лету. Поднимать, гасить и реализовывать любую логику на конкретный реквест
источник

b

betzy in testing_in_python
а как вы вообще приложение заставляете ходить по вашим мокнутым эндпоинтам? девы меняют или шо?
источник

СС

Сказочный Сникерс in testing_in_python
патчу понфиг, проставляя порт, который забиндился в моке
источник

СС

Сказочный Сникерс in testing_in_python
у меня есть сервисный класс, который управляет приложением. запускает, останавливает, генерирует конфиг итд. в нем я подключаю мок, узнаю порт на котором мок будет запущен и в генерации конфига этот порт проставляю. запускаю мок, запускаю приложение, дергаю реквест (или что угодно, чтобы приложение пошло в мок), из сервисного класса из мока вытягиваю все что нужно, проверяю
источник

СС

Сказочный Сникерс in testing_in_python
плюс так как у меня 1 приложение на 1 поток, то мне таких моков надо столько, сколько потоков и приложений) может кому то и хватит Mountebank и прочих, мне нет
источник

VK

Victor Kaplunov in testing_in_python
Круто чо.. но здесь не все SDET. Некоторым проще купить нож на кухню в магазине, а не полировать самому.
источник

СС

Сказочный Сникерс in testing_in_python
Дело не в этом, дело в том что по моему опыту лучше сразу делать хорошо, чем временно но быстро) если есть такая возможность конечно. Потому что потом вопрос поддержки может встать довольно остро
источник

VK

Victor Kaplunov in testing_in_python
Полностью согласен. Просто каждый это "хорошо" делает сообразно собственным умениям и доступному времени. Кстати, в Mountebank можно поднять одновременно нужное количество сервисов.
источник

СС

Сказочный Сникерс in testing_in_python
Да, я уже посмотрел, и на разных портах тоже можно
источник