如何在behave python中从我的功能文件中运行dev_appserver.py?

问题描述 投票:0回答:2

dev_appserver.py启动我的appengine服务的本地部署。我想在这个本地服务上运行我的测试。我想先在我的测试中启动服务器。如何在开始时在我的行为特征文件中运行dev_appsrrver.py app.yaml命令?

我已经尝试过subprocess.run(“python”,“dev_appserver.py”),但它说无法找到文件dev_appserver.py。我在尝试Windows。

google-app-engine google-cloud-platform python-behave
2个回答
0
投票

引用App Engine documentation

要启动本地开发服务器:

  1. 从包含应用程序的dev_appserver.py配置文件的目录中运行app.yaml命令,如下所示: 指定应用程序的目录路径,例如: dev_appserver.py [PATH_TO_YOUR_APP]。 或者,您可以指定特定服务的配置文件,例如: dev_appserver.py app.yaml。 要更改端口,请包含--port选项: dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]

0
投票

当您尝试使用subprocess方法启动可执行文件时,通常您不会获得与shell /终端相同的环境(执行路径和当前工作目录)。这意味着您可能需要使用传递给这些方法的参数列表中的完整路径来引用文件(可执行文件和常规文件)。

由于subprocess.run()执行投诉关于dev_appserver.py位置,这意味着它发现python OK(您可能仍然想检查它是2.7版本)并且您需要提供dev_appserver.py的完整路径,这取决于您的操作系统和您使用的SDK。例如,在Linux上(抱歉,我不是一个Windows家伙),路径是:

  • <GAE_SDK_dir>/dev_appserver.py如果使用GAE SDK
  • <gcloud_SDK_dir>/bin/dev_appserver.py如果使用gcloud SDK

您很可能也需要将路径传递给GAE应用程序的app.yaml文件 - 作为dev_appserver.py的参数,否则您会看到它抱怨无法找到应用程序或其文件(或者只是让事情运行得很糟糕 - 如果没有指定app.yaml文件dev_appserver.py尝试自动检测它,并且在所有情况下都不起作用)。我会避免并发症,只需指定app.yaml文件。

另请注意,subprocess.run() args应该是一个列表。像这样的东西:

subprocess.run(['python', '<sdk_path_to>/dev_appserver.py', '<app_path_to>/app.yaml'])

另请参阅appcfg.py not working in command line - 帖子是关于不同的可执行文件,但答案同样适用于dev_appserver.py

© www.soinside.com 2019 - 2024. All rights reserved.