Hook方法pytest_addoption注册命令行参数
- pytest_addoption:可以让用户注册一个自己定义的命令行参数,方便用户将数据传递给pytest;
- 一般是和内置fixture pytestconfig配合使用;
- pytest_addoption注册命令行参数,pytestconfig通过配置对象读取参数的值;
parser.addoption参数说明:
- name:自定义命令行参数的名字,可以是:"xx", "-xx" 或 "--xx"
- action:在命令行中遇到此参数时要采取的基本操作类型
- - store:默认,只存储参数的值,可以存储任何类型的值,此时 default 也可以是任何类型的值,而且命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值
- - append:存储一个列表,用 append 模式将可以同时多次使用自定义参数,并且 default 默认值必须是一个列表,pytest 会把 default 默认参数的值和多个自定义参数的值放在一个列表中
- - store_const:用 const 为命令行参数指定一个常量值,必须和 const 参数同时使用,使用这个模式后命令行参数不能赋值
- - append_const:存储一个列表,使用 const 为命令行参数指定一个常量值,并将 default 默认值和 const 常量值添加到列表中,这个模式可以同时多次使用自定义参数,但是还是不能赋值,只能使用常量
- nargs:应该使用的命令行参数的数量
- const:某些操作和nargs选择所需的常量值
- default:如果参数的值不在命令行中,则使用默认值
- type:可以是 python 的基础类型,比如:int,str,float,list 等类型,如果不指定类型的话,pytest会把接受到的参数值都默认为 str 类型,所以我们有时需要指定参数的类型,在使用 type 指定类型时,也需要把 default 的类型修改为同样的类型!
- choices:choices 可以指定几个值,自定义参数必须在这几个值中选择一个,否则会报错
- required:命令行选项是否可以省略(仅可选)
- help:对参数作用的简要说明
- metavar:用法消息中参数的名称
- dest:要添加到 parse_args() 返回的对象中的属性的名称
def pytest_addoption(parser):
parser.addoption("--environment",action="store",default="test",
help="当前两个环境 : dev or sit")
@pytest.fixture(scope="session")
def env(request):
print("\nCurrent env is : %s" % request.config.getoption("--environment"))
config = os.path.join(config_path,request.config.getoption("--environment"),"config.yaml")
with open(config,"r",encoding="utf-8") as f :
env_config = yaml.safe_load(f)
return env_config
session级别,去读取不同配置文件中的变量;default就是不同的路径设置成变量;