python-3.x - 如何准备python代码以在不同环境下从命令行运行?
问题描述
如何使用环境参数运行 python(行为)代码?例如 environment=X 行为 --tags @regression
到目前为止我所拥有的是
@given(u'user is on the firts page')
def step_impl(context):
context.first_page = FirstPage(context)
context.first_page.goto(url_config.URL["X env"])
并作为 dict URL
URL = {
"X env": "https://...",
"Y env": "https://..."
}
解决方案
您应该为此使用环境变量。管道脚本应包含以下命令来定义您要运行的环境:
export ENV=X_env
在您的测试脚本中,获取环境变量并使用它来获取适当的 url:
import os
@given(u'user is on the firts page')
def step_impl(context):
context.first_page = FirstPage(context)
execute_in_environment = os.environ.get("ENV")
context.first_page.goto(url_config.URL[execute_in_environment])
请注意,读取环境变量 - 所以这一行:execute_in_environment = os.environ.get("ENV")
通常在测试框架中的更高级别完成,以及其他配置内容。但是严格按照问题中共享的内容,我已将其添加到步骤实现中,这不是最佳实践。
如果您想先在 Windows 工作站上试用,请使用以下命令在 CMD 提示符中设置环境变量:
set ENV=X_env
因此,要针对特定环境运行测试,您将运行以下命令(这是一个 Linux 示例):
export ENV=X_env
behave --tags @regression
推荐阅读
- c++ - StretchBlt 仅在我处于 Aero 模式时有效
- javascript - 为什么我的 ScrollMagic.JS 将元素的高度设置为 0?
- reactjs - 如何更改我的句柄更改并提交给减速器?
- linux - 将参数传递给带有空格的 KSH 脚本
- java - doOnNext() 不会被称为 Spring Webflux
- node.js - NodeJs - ETAG 无法按预期与节点一起工作
- laravel - 无法使用 Laravel 将私有文件上传到 s3 存储桶/文件夹
- javascript - 如何获取 JSON 响应的特定部分
- sql - camel-sql 问题(不同的 sql server 版本)
- r - 每个 PDF 页面上的 Data.frame 标题(R - grid & gridExtra)