如何在行为Python中从功能文件中运行dev_appserver.py?

时间:2019-04-18 08:05:06

标签: google-app-engine google-cloud-platform python-behave

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

我尝试了subprocess.run(“ python”,“ dev_appserver.py”),但是它说找不到文件dev_appserver.py。我正在Windows上尝试。

2 个答案:

答案 0 :(得分: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]

  2.   

答案 1 :(得分:0)

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

由于subprocess.run()dev_appserver.py位置的执行投诉,这意味着它找到python OK(您可能仍要检查它是否为2.7版本),因此您需要提供{{ 1}},具体取决于您的操作系统和使用的SDK。例如,在Linux上(抱歉,我不是Windows专家),路径为:

  • dev_appserver.py(如果使用GAE SDK)
  • <GAE_SDK_dir>/dev_appserver.py(如果使用gcloud SDK)

您很可能也需要将路径传递到GAE应用程序的<gcloud_SDK_dir>/bin/dev_appserver.py文件-作为app.yaml的参数,否则您会看到它抱怨无法找到该应用程序或它的文件(或者只是运行不正常-如果未指定dev_appserver.py文件app.yaml尝试自动检测到它,并且在所有情况下均无效)。我会避免麻烦,只需指定dev_appserver.py文件即可。

还要注意,app.yaml args应该是一个列表。像这样:

subprocess.run()

另请参阅appcfg.py not working in command line-该帖子是关于另一个可执行文件的,但答案同样适用于subprocess.run(['python', '<sdk_path_to>/dev_appserver.py', '<app_path_to>/app.yaml'])