Skip to content

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

原文链接