🧩自定义运行参数

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的注册分为两部分:

  1. 声明注册参数 
  2. 编写参数处理函数,写起来较为繁琐也不直观。

而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。

results matching ""

    No results matching ""