多环境介绍
环境 | 使用场景 | 备注 |
---|---|---|
dev | 开发环境 | 开发自测 |
QA | 测试环境 | QA日常测试 |
preprod | 预发布环境 | 回归测试、产品验测试 |
prod | 线上环境 | 用户使用的环境 |
通过环境变量进行切换
- 设置环境变量
- 读取环境变量
# mac设置环境变量
export env=dev
# windows 设置环境变量
set env=dev
class TestMultiEnv:
def setup_class(self):
# 从环境变量中读取env
path_env = os.getenv("interface_env")
env = yaml.safe_load(open(f"./interface/{path_env}.yaml", encoding="utf-8"))
self.host = env["host"]
def test_env(self):
print(self.host)
使用命令行进行切换
与《selenium 多浏览器处理》章节逻辑相同
participant 命令行参数 as command
participant 测试用例 as cases
participant 环境配置 as env
autonumber
command -> cases : 通过命令执行测试用例,通过参数指定环境
command -> env: 通过命令行参数获取指定的环境
cases -> env: 测试用例获取指定的环境。如果没有指定,那么就执行默认的环境
# conftest.py
global_env = {}
def pytest_addoption(parser):
# group 将下面所有的 option都展示在这个group下。
mygroup = parser.getgroup("hogwarts")
# 注册一个命令行选项
mygroup.addoption("--env",
# 参数的默认值
default='test',
# 存储的变量
dest='env',
# 参数的描述信息
help='设置接口自动化测试默认的环境'
)
def pytest_configure(config):
default_ev = config.getoption("--env")
tmp = {"env": default_ev}
global_env.update(tmp)
class TestMultiEnv:
# def setup_class(self):
# # 从环境变量中读取env
# path_env = os.getenv("interface_env", default="de_env")
# env = yaml.safe_load(open(f"./interface/{path_env}.yaml", encoding="utf-8"))
# self.host = env["host"]
def setup_class(self):
path_env = global_env.get("env", "te_env")
env = yaml.safe_load(open(f"./interface/{path_env}.yaml", encoding="utf-8"))
self.host = env["host"]
def test_env(self):
print(self.host)