如何从 python 启动测试 pubsub 模拟器进行自动化测试
How to boot up a test pubsub emulator from python for automated testing
我正在开发一个烧瓶 API,其中一个端点是接收消息并将其发布到 PubSub。目前,为了测试该端点,我必须从命令行手动启动 PubSub 模拟器,并在测试期间保持 运行。它工作得很好,但它不是自动化测试的理想选择。
我想知道是否有人知道从 python 启动测试 PubSub 模拟器的方法?或者如果有人有更好的解决方案来测试这样的 API?
据我所知,没有 Python 本机 Google Cloud PubSub 模拟器可用。
您的选择很少,所有这些都需要从 Python:
启动外部程序
只需调用您提到的 gcloud 命令:gcloud beta emulators pubsub start [options]
直接从您的 python 应用程序将其作为外部程序启动。
作为 Cloud SDK 一部分的 PubSub 模拟器是一个 JAR 文件,由 CLOUD_SDK_INSTALL_DIR/platform/pubsub-emulator/bin/cloud-pubsub-emulator
中存在的 bash 脚本引导。您可以直接 运行 这个 bash 脚本。
这里是Whosebug answer which covers multiple ways to launch an external program from Python.
另外,从你的问题中还不太清楚你是如何在 Python.
中调用 PubSub APIs 的
对于单元测试,您可以考虑在实际调用 Cloud PubSub APIs 的代码上设置一个包装器,并为此 API 包装器注入一个假的。通过这种方式,您可以测试仅调用假 API 包装器而不是真正的 API 包装器的其余代码,而不必担心启动任何外部程序。
对于集成测试,PubSub 模拟器肯定有用。
我通常是这样的:
1. 我创建了一个 python 客户端 class,它使用模拟器中使用的主题、项目和订阅进行发布和订阅。
注意:您需要在 python 项目中将 PUBSUB_EMULATOR_HOST=localhost:8085
设置为环境。
2. 我将 pubsub-emulator 作为 docker 容器旋转起来。
注意:您需要设置一些环境、挂载卷和公开端口8085
。
为容器设置以下环境:
PUBSUB_EMULATOR_HOST
PUBSUB_PROJECT_ID
PUBSUB_TOPIC_ID
PUBSUB_SUBSCRIPTION_ID
- 写任何你想写的集成测试。根据您的测试要求使用来自客户端的发布者或订阅者。
我正在开发一个烧瓶 API,其中一个端点是接收消息并将其发布到 PubSub。目前,为了测试该端点,我必须从命令行手动启动 PubSub 模拟器,并在测试期间保持 运行。它工作得很好,但它不是自动化测试的理想选择。
我想知道是否有人知道从 python 启动测试 PubSub 模拟器的方法?或者如果有人有更好的解决方案来测试这样的 API?
据我所知,没有 Python 本机 Google Cloud PubSub 模拟器可用。
您的选择很少,所有这些都需要从 Python:
启动外部程序只需调用您提到的 gcloud 命令:
gcloud beta emulators pubsub start [options]
直接从您的 python 应用程序将其作为外部程序启动。作为 Cloud SDK 一部分的 PubSub 模拟器是一个 JAR 文件,由
CLOUD_SDK_INSTALL_DIR/platform/pubsub-emulator/bin/cloud-pubsub-emulator
中存在的 bash 脚本引导。您可以直接 运行 这个 bash 脚本。
这里是Whosebug answer which covers multiple ways to launch an external program from Python.
另外,从你的问题中还不太清楚你是如何在 Python.
中调用 PubSub APIs 的对于单元测试,您可以考虑在实际调用 Cloud PubSub APIs 的代码上设置一个包装器,并为此 API 包装器注入一个假的。通过这种方式,您可以测试仅调用假 API 包装器而不是真正的 API 包装器的其余代码,而不必担心启动任何外部程序。
对于集成测试,PubSub 模拟器肯定有用。
我通常是这样的:
1. 我创建了一个 python 客户端 class,它使用模拟器中使用的主题、项目和订阅进行发布和订阅。
注意:您需要在 python 项目中将 PUBSUB_EMULATOR_HOST=localhost:8085
设置为环境。
2. 我将 pubsub-emulator 作为 docker 容器旋转起来。
注意:您需要设置一些环境、挂载卷和公开端口8085
。
为容器设置以下环境:
PUBSUB_EMULATOR_HOST
PUBSUB_PROJECT_ID
PUBSUB_TOPIC_ID
PUBSUB_SUBSCRIPTION_ID
- 写任何你想写的集成测试。根据您的测试要求使用来自客户端的发布者或订阅者。