hook钩子函数之pytest_collection_modifyitems

Hook钩子函数的定义:

钩子函数

1、是一种函数,在系统消息触发时,被系统调用

2、不是用户自己触发点,也就是说,不需要用户调用就会被触发

3、使用时,直接编写函数体

4、钩子函数的名称是确定的,当系统消息触发时,钩子函数会被自动调用

pytest_collection_modifyitems 是pytest中的钩子函数,用于收集测试用例,且在测试用例收集完毕之后被调用,它有三个参数:

session:会话对象;

config:配置对象;

items:用例对象列表;改变items里面用例的顺序就可以改变用例的执行顺序了

这三个参数分别有不同的作用,都可以拿来单独使用。
def pytest_collection_modifyitems(session, config, items):
    """ called after collection has been performed, may filter or re-order
    the items in-place.
    :param _pytest.main.Session session: the pytest session object
    :param _pytest.config.Config config: pytest config object
    :param List[_pytest.nodes.Item] items: list of item objects
    """

pytest_collection_modifyitems 这个函数顾名思义就是收集测试用例、改变用例的执行顺序。

这三个参数分别有不同的作用,都可以拿来单独使用。
修改用例执行顺序主要是使用 items 参数【用例执行之前,收集到的测试用例会以元素对象的方式存放在用例对象列表items中】

这三个参数可以单独使用,也可以搭配使用。

在conftest.py中定义钩子函数pytest_collection_modifyitems的内容,可以对测试用例的执行顺序,测试用例的编码,进行修改。

用法1:对测试用例的编码解码,解决乱码的问题

def pytest_collection_modifyitems(items):
    """
    测试用例收集完成时,将收集到的item的name和nodeid的中文显示在控制台上
    :return:
    """
    for item in items:
        print(item.name)
        item.name = item.name.encode("utf-8").decode("unicode_escape")
        print(item.nodeid)
        item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")

用法2、删除某些用例,或者调整测试用例的顺序;

pytest修改测试用例执行顺序(钩子函数:pytest_collection_modifyitems) - 习久性成 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值