pytest编写插件一 ------修改默认编码unicode格式的测试用例,改为支持中文格式的unicode-escape

  • 用例收集阶段改写编码

1、在hookspec.py 文件中找到pytest_collection_modifyitems, 复制到conftest.py文件中

2、在conftest.py文件中重写pytest_collection_modifyitems函数

def pytest_collection_modifyitems(items):
    """
    1、改写测试用例的名字;
    2、改写测试用例路径;
    """
    print(items)
    # name 用例的名字
    # nodeid 测试用例路径
    for item in items:
        item.name = item.name.encode('utf-8').decode('unicode_escape')
        item._nodeid = item.nodeid.encode('utf-8').decode('unicode_escape')   
# pytest源码中nodeid为隐藏的函数名,实际函数的内容为return self._nodeid,
# 因此,这里item中表示测试用例路径的属性名应该为_nodeid

3、通过打断点,查看hook函数调用前后,测试用例的名字和路径的编码格式区别

1 个赞