就是钩子函数
pytest 编写自己的插件--添加命令行参数
# 添加一个命令行参数
def pytest_addoption(parser):
mygroup = parser.getgroup("hogwarts") #group 将下面所有的 option都展示在这个group下。
mygroup.addoption("--env", #注册一个命令行选项
default=‘test‘, # 参数的默认值
dest=‘env‘, # 存储的变量
help=‘set your run env‘ # 帮助提示 参数的描述信息
)
demo / 新建一个文件夹
然后新建一个文件conftest.py
from typing import List
import pytest
# import yaml
def pytest_collection_modifyitems(session, config, items: List):
for item in items:
print(item)
# 添加一个命令行参数
def pytest_addoption(parser):
mygroup = parser.getgroup("hogwarts") # group 将下面所有的 option都展示在这个group下。
mygroup.addoption("--env", # 注册一个命令行选项
default=‘test‘, # 参数的默认值
dest=‘env‘, # 存储的变量
help=‘set your run env‘ # 帮助提示 参数的描述信息
)
@pytest.fixture(scope=‘session‘)
def cmdoption(request):
env = request.config.getoption("--env", default=‘test‘)
# return env
# print(env, ‘=====‘)
if env == ‘test‘:
print("test 环境")
datapath = "datas/test/datas.yml"
elif env == ‘dev‘:
print("开发 环境")
datapath = "datas/dev/datas.yml"
return {‘host‘: ‘127.0.0.1‘, ‘port‘: ‘200‘}
# with open(datapath) as f:
# datas = yaml.safe_load(f)
# print(datas)
# return env, datas
新建一个文件 test_mm.py
import pytest
@pytest.mark.parametrize("name", [‘ha‘, ‘23‘])
def test_mm(name):
print(name)
def test_login():
print(‘login‘)
def test_login_fail():
print(‘login‘)
assert False
def test_search():
print(‘search‘)
def test_env(cmdoption):
print(‘112‘)
print(cmdoption)
执行脚本
pytest -s -v --env dev .\test_mm.py::test_env
dev 就会作为参数 传到 cmdoption 中,cmdoption 会处理,这样就可以添加进命令行执行
原文:https://www.cnblogs.com/c-keke/p/14883196.html