接口自动化测试:利用环境变量管理测试环境的切换

#conftest.py
import os
import pytest


def pytest_addoption(parser):
    """利用钩子函数添加命令行参数"""
    parser.addoption(
        "--envhost",
        # action="append", #如果是append,则default必须为列表类型
        action='store',  # 如果是store,则default可以为任何类型
        # default=["http:localhost:8000"],
        default="127.0.0.1:8000",  # 命令行没有传入则取default,传入了则以传入的为准
        help="test case host address"
    )


@pytest.fixture(scope="session", autouse=True)
def env_host(request):
    """获取命令行参数,并添加到会话的环境变量中"""
    print("request.config:", type(request.config))
    # os.environ["host_address"] = request.config.getoption("--envhost")[0]
    os.environ["host_address"] = request.config.getoption("--envhost")
    print("当前的执行环境:%s" % os.environ["host_address"])

在和conftest.py同一个包下的py文件中执行如下测试用例:

import os

def test_option():
    url = os.environ["host_address"]+ "/api/login"
    print(url)

命令行中执行:pytest --envhost="localhost:8000" -sv

执行结果如下,获取到了传入的参数:

注意:

  • 只能通过命令行调用pytest才能生效
  • 只有和conftest.py在同一个package下的测试用例才能引用该环境变量
  • 基于以上两点,可以将conftest.py放到项目根目录下,则整个项目都可以引用该环境变量
posted @ 2020-10-09 22:39  沧海1024  阅读(622)  评论(0编辑  收藏  举报