原文参考:pytest接口测试(九)–环境变量(自定义命令行参数)
需求描述:
公司项目上线,一般要经过三个环境的测试,例如我这边就有:开发环境、测试环境、正式环境
自动化代码一般不会变动,所以这边仅需要 手动切换运行环境 即可
于是乎我想目光投向了脚本执行方法 run.py 上
代码实现:
-
在 conftest.py 文件定义一个全局的命令行参数
# 添加命令行参数 def pytest_addoption(parser): parser.addoption( "--cmdhost", action="store", # default: 默认值,命令行没有指定host时,默认用该参数值 default="http://www.baidu.com", help="获取当前代码执行环境" ) # autouse=True自动执行该前置操作 @pytest.fixture(scope="session", autouse=True) def host(request): '''获取命令行参数''' # 获取命令行参数给到环境变量 os.environ["host"] = request.config.getoption("--cmdhost") print("当前用例运行测试环境:%s"%os.environ["host"]) return os.environ["host"]
-
此时 host 方法可以直接作为参数全局使用
def test_getUserInfo(self,host): url = host + "/api/login" print("测试用例url为:",url)
-
在 run.py 文件中维护测试环境的切换
run_command = "pytest -v -s --cmdhost=https://www.4399.com .\\test_login.py" os.system(run_command)
当指定了 --cmdhost = https://www.4399.com,此时代码运行环境 host = https://www.4399.com
如果没有指定 --cmdhost ,此时代码运行环境为默认的:http://www.baidu.com