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) - 习久性成 - 博客园