Pytest框架,ids参数用例中文输出乱码问题解决办法

Pytest框架,ids参数用例中文输出乱码问题解决办法

  • 问题表现
    – 我们在使用pytest测试框架执行自动化测试用例时,ids参数用例描述有中文时控制台打印乱码。
  • 报错信息

产生的原因

  • 字符编码不匹配或终端环境设置不正确

解决方法

方法一:使用pytest_collection_modifyitems钩子函数

  • conftest.py文件中,使用pytest_collection_modifyitems钩子函数对输出的item.nameitem.nodeid进行重新编码,以确保中文字符能够正确显示。

conftest.py

def pytest_collection_modifyitems(items):
    for item in items:
        # 重新编码name和nodeid,以正确显示中文字符
        item.name = item.name.encode("utf-8").decode("unicode_escape")
        item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")

方法二:在pytest.ini中设置配置项

  • 通过在pytest.ini文件中设置disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True,可以禁用测试ID的转义,以便在控制台正确显示中文字符。

pytest.ini

[pytest]
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True