pytest 测试用例参数化时用例名称有中文名,输出控制台和HTML测试报告unicpode编码问题
在测试用例所在目录的conftest文件中添加钩子函数pytest_collection_modifyitems(items)即可
def pytest_collection_modifyitems(items):
"""
测试用例收集完成时,将收集到的item的name和nodeid的中文显示在控制台上
:return:
"""
for item in items:
# 只需要对中括号内的数据做一个编码转换即可,防止因为测试用例本身就是中文导致编码再出问题
names = item.name.split("[")
nodeids = item.nodeid.split("[")
if len(names) > 1:
item.name = names[0] + "[" + names[-1].encode("utf-8").decode("unicode_escape")
if len(nodeids) > 1:
# 报告里用例名称用的是nodeis所以nodeid也需要转换一下
item._nodeid = nodeids[0] + "[" + nodeids[-1].encode("utf-8").decode("unicode_escape")

浙公网安备 33010602011771号