Как загрузить тестовый эмулятор pubsub с Python для автоматического тестирования

Я работаю над API фляги, одна из конечных точек которого должна получить сообщение и опубликовать его в PubSub. В настоящее время, чтобы протестировать эту конечную точку, мне придется вручную запускать эмулятор PubSub из командной строки и поддерживать его работоспособность во время теста. Он работает нормально, но не идеален для автоматизированного тестирования.

Интересно, знает ли кто-нибудь способ развернуть тестовый эмулятор PubSub из python? Или есть ли у кого-нибудь лучшее решение для тестирования такого API?


person xiu shi    schedule 22.06.2017    source источник


Ответы (2)


Насколько мне известно, встроенного эмулятора Google Cloud PubSub для Python не существует.

У вас есть несколько вариантов, все они требуют запуска внешней программы из Python:

  • Просто вызовите указанную вами команду gcloud: gcloud beta emulators pubsub start [options] прямо из вашего приложения Python, чтобы запустить это как внешняя программа.

  • Эмулятор PubSub, который входит в состав Cloud SDK, представляет собой файл JAR, загружаемый с помощью сценария bash, присутствующего в CLOUD_SDK_INSTALL_DIR/platform/pubsub-emulator/bin/cloud-pubsub-emulator. Вы могли бы запустить этот сценарий bash напрямую.

Вот ответ на StackOverflow, который охватывает несколько способов запуска внешней программы из Python.

Кроме того, из вашего вопроса не совсем ясно, как вы вызываете API PubSub в Python.

  • Для модульных тестов вы можете подумать о настройке оболочки над кодом, который фактически вызывает API Cloud PubSub, и внедрить подделку для этой оболочки API. Таким образом, вы можете протестировать остальную часть кода, который вызывает только вашу поддельную оболочку API, а не настоящую оболочку API, и не беспокоиться о запуске каких-либо внешних программ.

  • Для интеграционных тестов однозначно пригодится эмулятор PubSub.

person Tuxdude    schedule 23.06.2017

Я обычно поступаю так:

1. Я создаю клиентский класс python, который публикует и подписывается на тему, проект и подписку, используемые в эмуляторе.

Примечание. Вам необходимо установить PUBSUB_EMULATOR_HOST=localhost:8085 как env в вашем проекте python.

2. Я использую pubsub-эмулятор как контейнер для докеров.

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

установите следующие env для контейнера:

  • PUBSUB_EMULATOR_HOST
  • PUBSUB_PROJECT_ID
  • PUBSUB_TOPIC_ID
  • PUBSUB_SUBSCRIPTION_ID
  1. Напишите любые интеграционные тесты, которые хотите. Используйте издателя или подписчика от клиента в зависимости от ваших требований к тесту.
person bh4r4th    schedule 07.10.2020