pytest编写插件2 ------为第三方插件添加命令行参数

在hookspec.py文件中找到pytest_addoption函数

在conftest.py文件中重写pytest_addoption函数

def pytest_addoption(parser):    
    mygroup = parser.getgroup("hogwarts")     #为命令行添加一个组parser,group 将下面所有的 option都展示在这个group下。
    mygroup.addoption("--env",    #注册一个命令行选项
        default='test',      # 参数的默认值
        dest='env',            #  存储的变量,为属性命令,可以使用Option对象访问到这个值,暂用不到
        help='set your run env'    # 帮助提示 参数的描述信息
        )
    mygroup.addoption("--env1",
                      default="test1",
                      dest='env1',
                      help='set your run env1'
                      )

通过定义fixture拿到定义好的参数,并针对传入的不同参数完成不同的逻辑处理(例如测试环境和开发环境)

@pytest.fixture(scope='session')
def cmdoption(request):
    global datapath
    myenv = request.config.getoption("--env", default='test')
    if myenv == 'test':
        datapath = "datas/test/data.yaml"
    elif myenv == 'dev':
        datapath = "datas/dev/data.yaml"

    with open(datapath) as f:
        datas = yaml.safe_load(f)
    return myenv, datas

通过在测试用例中获取fixture修饰的函数,实现新增命令行参数的传递

image