pytest中的钩子函数:pytest_addoption(parser)

# @python3
# @Time    : 2023/4/21 9:05
# @Author  : Jike_Ma
# @FileName: conftest.py

import pytest

hosts = {
    "dev": "http://dev.com.cn",
    "prod": "http://prod.com.cn",
    "test": "http://test.com.cn"
}


# 注册一个自定义参数,并为其命名为 --host ,添加到pytest配置对象
def pytest_addoption(parser):
    parser.addoption("--host",
                     action="store", # 默认只存储参数的值【命令行参数添加到pytest配置对象中的参数的参数值】
                     default="test",
                     choices=["test", "dev", "prod"], # 可以为该参数值指定几个值
                     help="将命令行参数 ‘--host’ 添加到pytest配置对象中"
                     )

    parser.addoption("--zone",
                     action="append", # 将参数值存储为一个列表,用 append 模式将可以在pytest命令行方式执行测试用例的同时多次向程序内部传递自定义参数对应的参数值;
                     default=[], # defalut默认值必须是一个列表类型,pytest会将default 默认参数值和多个自定义参数值放在一个列表中
                     type=int, # 注册的自定义到pytest配置对象中的命令行参数对应的参数值应该转换的数据类型。默认str型
                     help="将命令行参数 ‘--zone’ 添加到pytest配置对象中"
                     )


# pytest配置对象中读取自定义参数--host 的值
@pytest.fixture(scope="session")
def get_cmdopt(request):
    return hosts.get(request.config.getoption("--host"))


# 从配置对象中读取自定义参数的值
@pytest.fixture(scope="session")
def get_zone(request):
    return request.config.getoption("--zone")

# @python3
# @Time    : 2023/4/21 9:18
# @Author  : Jike_Ma
# @FileName: test_cmdopt.py
import pytest


def test_get_cmdopt(get_cmdopt, get_zone):
    env, zone = get_cmdopt, get_zone
    print(env, zone)
    print(type(env))
    print(type(zone[0]))


if __name__ == '__main__':
    pytest.main(['-s', '--host=prod', "--zone=8"])

 

具体文档:https://www.cnblogs.com/hls-code/p/15046457.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值