pytest简易教程(19):parametrize中给用例取别名
pytest简易教程汇总,详见:https://www.cnblogs.com/uncleyong/p/17982846
之前我们分享了fixture中使用ids给用例取别名(详见:https://www.cnblogs.com/uncleyong/p/18020735)
类似的,parametrize中也可以使用ids给用例取别名,从而增加可读性
示例:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : 韧 # @wx :ren168632201 # @Blog :https://www.cnblogs.com/uncleyong/ import pytest data = ["ren", "qzcsbj"] ids = [f"注册用户:{name}" for name in data] @pytest.mark.parametrize("name", data, ids=ids) class TestQzcsbj: def test_case(self, name): print(f"name={name}")
结果:中文未正常显示,原因是pytest将ids视为ASCII字符,但ASCII字符不包含中文,所以pytest会将其转换为unicode编码展示
方案一:
在conftest.py中利用pytest提供的hook函数pytest_collection_modifyitems解决unicode编码问题
创建conftest.py
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : 韧 # @wx :ren168632201 # @Blog :https://www.cnblogs.com/uncleyong/ def pytest_collection_modifyitems(items): """测试用例收集完成时,将收集到的item的name和nodeid的中文显示在控制台上""" for item in items: item.name = item.name.encode("utf-8").decode("unicode_escape") print(item.nodeid) item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")
结果:
方案二:
创建pytest.ini
[pytest] disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!