我正在研究Flask API,端点之一是接收消息并将其发布到PubSub。当前,为了测试该端点,我将不得不从命令行手动启动PubSub仿真器,并使其在测试期间保持运行。它工作得很好,但是对于自动化测试来说并不是理想的选择。
我想知道是否有人知道从python启动测试PubSub模拟器的方法?或者,如果有人有更好的解决方案来测试这样的API?
最佳答案
据我所知,没有可用的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仿真器绝对有用。
关于python - 如何从python启动测试pubsub模拟器以进行自动测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44708430/