如何从python启动测试pubsub模拟器进行自动测试

时间:2017-06-22 20:03:52

标签: python google-cloud-platform google-cloud-pubsub

我正在研究一个烧瓶API,其中一个端点是接收消息并将其发布到PubSub。目前,为了测试该端点,我将不得不从命令行手动启动PubSub仿真器,并在测试期间保持它运行。它工作得很好,但它不适合自动化测试。

我想知道是否有人知道如何从python中启动测试PubSub模拟器?或者,如果有人有更好的解决方案来测试这样的API?

2 个答案:

答案 0 :(得分:1)

据我所知,没有可用的Python原生Google Cloud PubSub模拟器。

您没有多少选择,所有选项都需要从Python启动外部程序:

  • 直接从你的python应用程序调用你提到的gcloud命令:gcloud beta emulators pubsub start [options],将其作为外部程序启动。

  • 作为Cloud SDK的一部分提供的PubSub模拟器是由CLOUD_SDK_INSTALL_DIR/platform/pubsub-emulator/bin/cloud-pubsub-emulator中的bash脚本引导的JAR文件。您可以直接运行此bash脚本。

这是StackOverflow answer which covers multiple ways to launch an external program from Python

另外,从你的问题来看,你是如何用Python调用PubSub API的还不是很清楚。

  • 对于单元测试,您可以考虑在实际调用Cloud PubSub API的代码上设置包装器,并为此API包装器注入假名。这样,您可以测试其余的代码,这些代码只调用您的假API包装器而不是真正的API包装器,而不用担心启动任何外部程序。

  • 对于集成测试,PubSub模拟器肯定会有用。

答案 1 :(得分:0)

这是我通常的工作方式:

1。。我创建了一个python客户端类,该类确实发布并订阅了模拟器中使用的主题,项目和订阅。

注意:您需要在Python项目中将PUBSUB_EMULATOR_HOST=localhost:8085设置为env。

2。。我启动了一个pubsub仿真器作为docker容器。

注意:您需要设置一些环境,挂载卷并公开端口8085

为容器设置以下环境:

  • PUBSUB_EMULATOR_HOST
  • PUBSUB_PROJECT_ID
  • PUBSUB_TOPIC_ID
  • PUBSUB_SUBSCRIPTION_ID
  1. 编写所需的任何集成测试。根据测试要求使用客户端的发布者或订阅者。