pytest_collection_modifyitems钩子函数修复参数化使用ids当测试用例描述有中文时控制台及报告中用例标题输出为Unicode编码问题

当pytest测试用例参数化时,ids包含中文会导致控制台和报告出现Unicode编码显示。通过使用pytest_collection_modifyitems钩子函数,可以修正这个问题,确保中文标题在运行结果中正常显示。本文介绍了问题的现象、解决方法以及提供相关学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们对测试用例进行参数化时,使用@pytest.mark.parametrize的ids参数自定义测试用例的标题,当标题中有中文时,控制台和测试报告中会出现Unicode编码问题,这看起来特别像乱码,我们想让中文正常展示出来,需要用到pytest框架的钩子函数pytest_collection_modifyitems。

先看问题:

# file_name: test_parametrize.py


import pytest


def return_user():
    return [('lwjnicole', '12345'), ('nicole', '123111')]


class Test_D:

    @pytest.mark.parametrize("username,password",
                             return_user(),
                             ids=[
                                 "输入正确的用户名、密码,登录成功",
                                 "输入错误的用户名、密码,登录失败"
                             ])
    def test_login(self, username, password):
        print("username = {}, password = {}".format(username, password))
        assert username == "lwjnicole"


if __name__ == '__main__':
    pytes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值