Pytest精通指南(15)Parametrize之设置别名和解决中文乱码


文章目录

      • 前言
      • 使用ids参数设置别名
      • 解决别名乱码方式一
      • 解决别名乱码方式二


请添加图片描述

前言

前有文章讲解了fixture函数中使用ids参数给测试用例函数设置别名;
查漏补缺连接:待定
当使用@pytest.mark.parametrize来参数化我们的测试函数时,也可以使用ids参数为每个参数组合指定一个唯一的标识符,这个标识符被称为id别名

这个id用于在测试报告中标识每个单独的测试实例,使得测试报告更具可读性。

使用ids参数设置别名

示例代码

import pytestparams = ["username", "password"]
values = [["admin", "admin"], ["guest", "guest"]]
agname = ["管理员用户:admin", "游客用户:guest"]@pytest.mark.parametrize(argnames=params, argvalues=values, ids=agname)
def test_case_01(username, password):print(f"username={username}, username={password}")

执行结果

Python中,字符串的编码默认是UTF-8

但是,在某些环境或编辑器中,如果不正确地处理或显示UTF-8编码的字符串,可能会出现乱码。

当在pytest@pytest.mark.parametrize中使用中文别名时,乱码问题可能会出现,特别是当环境或测试报告生成工具不支持或错误处理UTF-8编码时。

请添加图片描述

解决别名乱码方式一

conftest.py文件添加如下代码

def pytest_collection_modifyitems(items):"""pytest_collection_modifyitems 是pytest中的一个hook函数(内置的)是为了在测试用例收集完成后对测试项的 name 和 nodeid 进行处理,以确保它们在控制台上的显示是正确的。这段代码通过编码和解码操作来处理中文字符,从而解决了可能出现的乱码问题。"""print('\n')for item in items:print("处理前的测试用例名称", item.name)print("处理前的测试用例节点", item._nodeid)item.name = item.name.encode("utf-8").decode("unicode_escape")item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")

执行结果

请添加图片描述

解决别名乱码方式二

pytest.ini配置文件中添加如下代码

这个配置项的目的是禁止pytest对测试ID(通常是通过@pytest.mark.parametrizeids参数设置的)中的特殊字符(如非ASCII字符)进行转义。

默认情况下,pytest会对测试ID中的特殊字符进行转义,以确保它们可以在命令行和测试报告中正确显示。然而,在某些情况下,特别是当控制台或终端的字符编码设置不正确时,这种转义可能会导致乱码。

[pytest]
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True

执行结果

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/626737.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高标准化及可扩展的产品能力,助力声通科技运营效率不断提升

高标准化及可扩展的产品能力对企业发展具有重要意义,有助于企业提高运营效率、增强市场竞争力,并推动企业实现规模化发展。上海声通信息科技股份有限公司(下文称:声通科技或公司)作为我国领先的企业级全栈交互式人工智…

重生奇迹mu恶魔来袭副本

在游戏重生奇迹mu中,恶魔来袭副本是玩家能够组队通过的副本。但是因为手游组队的不方便性,部分玩家对其还是非常苦手。而今天,我们就给大家讲解一下这个游戏的双人通关攻略。 1、挂机找怪手动输出 (1)对于普通剧情副本而言,挂机…

【文献分享】PCCP:机器学习 + 分子动力学 + 第一性原理 + 热学性质 + 微观结构

分享一篇关于机器学习 分子动力学 第一性原理 热学性质(密度、粘度、扩散系数) 微观结构的文章。 感谢论文的原作者! 关键词: 1. Machine learning, 2. Deep potential, 3. Molecular dynamics 4. Molten salt, 5. Thermo…

飞桨Ai(二)paddle使用CPU版本可以正常识别,切换为GPU版本时无法识别结果

一、问题描述: 刚开始用paddle的CPU版本,对训练好的模型进行推理,正常识别出想要的结果后来尝试使用paddle的GPU版本,然后发现识别出来是空的 二、系统思路: 最终系统环境如下: 系统:win10 …

Docker安装(一)

一、安装Docker 服务器系统:centos 7 1.本地有docker的首先卸载本机docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \dock…

反转二叉树(力扣226)

解题思路:用队列进行前序遍历的同时把节点的左节点和右节点交换 具体代码如下: class Solution { public:TreeNode* invertTree(TreeNode* root) {if (root NULL) return root;swap(root->left, root->right); // 中invertTree(root->left)…

网络编程(现在不重要)

目录 网络编程三要素与InetAddress类的使用 软件架构 面临的主要问题 网络编程三要素(对应三个问题) InetAddress的使用 TCP与UDP协议剖析与TCP编程案例(了解) TCP协议 UDP协议 例子 UDP、URL网络编程 URL:&…

NVM下载、NVM配置、NVM常用命令

NVM(nodejs版本管理切换工具)下载、配置、常用命令 0、NVM常用命令 nvm off // 禁用node.js版本管理(不卸载任何东西) nvm on // 启用node.js版本管理 nvm install <version> // 安装node.js的命名 version是版本号 例…

linux 挂载云盘 NT只能挂载2T,使用parted挂载超过2T云盘

一、删除原来挂载好的云盘和分区 1、查看挂载号的云盘 fdisk -l 发现我们有5千多G但是只挂载了2T&#xff0c;心里非常的慌张&#xff01;十分的不爽&#xff01; 好&#xff0c;我们把它干掉&#xff0c;重新分区&#xff01; 2、解除挂载 umount /homeE 没保存跳转到&…

mybatis-puls 条件分析插件

一&#xff0c;能做什么 我们在平时的开发中,会遇到一些慢sql. MP也提供了性能分析插件,如果超过这个时间就停止运行! 二&#xff0c;如何实现 2.1引入条件分析插件 //性能分析BeanProfile({"dev","test"}) //设置dev 和 test环境开启public Performanc…

[自研开源] MyData v0.8.1 更新日志

开源地址&#xff1a;gitee | github 详细介绍&#xff1a;MyData 基于 Web API 的数据集成平台 部署文档&#xff1a;用 Docker 部署 MyData 使用手册&#xff1a;MyData 使用手册 试用体验&#xff1a;https://demo.mydata.work 交流Q群&#xff1a;430089673 介绍 MyData …