🧩自定义运行参数
aomaker提供的自定义参数注册,是对pytest提供的注册机制的一种补充,两者并不冲突。
由于aomaker提供了多任务模式,如果通过pytest注册了一些全局cli参数,它的执行时机是在子进程\线程内,这可能会导致一些全局配置的设置失败,而aomaker注册的cli参数,是在主进程\线程内执行,即会早于pytest且整个运行过程只执行一次。
pytest注册用法:
conftest.py
import pytest
# 1.注册参数
def pytest_addoption(parser):
parser.addoption("--zone", help="切换可用区")
# 2.编写处理函数
@pytest.fixture(autouse=True, scope="session")
def switch_zone(request):
# 获取参数值
zone = request.config.getoption("zone")
config.set("zone", zone)
可以看到,pytest的注册分为两部分:
- 声明注册参数
- 编写参数处理函数,写起来较为繁琐也不直观。
而aomaker在写法上做了一定层度优化,aomaker注册方式如下:
hooks.py
from aomaker.aomaker import command
@command("--zone", help="切换可用区")
def switch_zone(zone):
config.set("zone", zone)
aomaker提供了@command
装饰器(在工程根目录下的hooks.py
文件中进行注册),将参数申明、属性配置和处理函数绑定在一起,更加直观简洁,且函数接收的参数即为参数对应的值,不需要再做额外处理。
command接收的第一个参数为参数名,以“-”或“–”开头,后面提供的参数以关键字形式接收,支持的配置参数:
- help:参数的说明文本。
- required:该参数是否是必须的,类型为布尔值。如果设置为True,则必须在命令行中提供该选项的值。默认值为False。
- default:选项的默认值。如果未在命令行中提供选项,则将使用该默认值。
- show_default:是否在帮助消息中显示默认值,类型为布尔值。默认为False。
- type:参数的类型,例如,如果设置为int,则选项将被转换为整数类型。默认为字符串类型。
- multiple:参数是否可以多次出现在命令行上,类型为布尔值。如果设置为True,则可以在命令行上多次提供该选项。默认为False。
- action_store:参数后面可以加参数值,接收一个布尔值,如果为True,表示传递该参数,值为True,不传,值为False。