pytest 钩子函数之pytest_collection_modifyitems

pytest_collection_modifyitems

官方文档描述:
在执行收集后调用。可以就地过滤或重新排序项目。
参数
session ( pytest.Session ) -- pytest 会话对象。
config ( pytest.Config ) -- pytest 配置对象。
items ( List [ pytest.Item ] ) -- 项目对象列表。

使用场景1:

当使用参数化时,我们发现用例如果出现中文参数时,用例会显示为Unicode编码,如下:

case:

class CreateAccountTest(TestCase):

    @pytest.mark.parametrize("name", ["张三", "李四", "王五"])
    def create_account_test(self, name):
        self.log_info("执行用例: 创建账户:{} .......".format(name))

执行结果:
image

那么此时可以使用钩子函数pytest_collection_modifyitems 解决此问题
钩子函数实现如下:
根目录下创建conftest.py

def pytest_collection_modifyitems(session, config, items):
    for item in items:
        item.name = item.name.encode("utf-8").decode("unicode_escape")
        item._nodeid = item._nodeid.encode("utf-8").decode("unicode_escape")

此时执行用例:
image

posted @ 2020-05-08 00:34  silence022  阅读(298)  评论(0)    收藏  举报