python + unittest + request + parameterized 参数化遇到中文名称testcase不显示的问题
最近使用python+unittest+request+parameterized做接口测试,然后在利用parameterized做参数化时,发现测试用例的中文名称,感觉很奇怪,于是跟踪了parameterized的源码。
花了2小时之久,终于找到,是parameterized.expand函数中,使用了name_func对测试用例的名称进行定义。然后继续追踪发现
在我们不传入name_func的值时,系统会使用默认的函数去赋值
name_func = name_func or default_name_func
然后跟踪到default_name_func查看,发现调用了to_safe_name方法对字符串进行格式化
def default_name_func(func, num, p):
base_name = func.__name__
name_suffix = "_%s" %(num, )
if len(p.args) > 0 and isinstance(p.args[0], string_types):
name_suffix += "_" + parameterized.to_safe_name(p.args[0])
return base_name + name_suffix
进一步查看to_safe_name,发现to_safe_name中,格式化的pattern,过滤了中文
def to_safe_name(cls, s):
return str(re.sub("[^a-zA-Z0-9_]+", "_", s))
所以问题找到了,是因为t_safe_name过滤了中文。
那么怎么解决呢,我们一般最好不要修改源代码吧,所以我们可以按照default_name_func自定义一个函数,然后调用自定义的to_safe_name方法
def to_safe_name(s):
# 对所有非英文,数字,下划线和中文的字符都替换为"_"
return str(re.sub("[^a-zA-Z0-9_\u4e00-\u9fa5]+", "_", s))
def test_name_func(func, num, p):
base_name = func.__name__
name_suffix = "_%s" %(num, )
if len(p.args) > 0 and isinstance(p.args[0], string_types):
name_suffix += "_" + to_safe_name(p.args[0])
return base_name + name_suffix
然后parameterized.expand的参数中写上自定义的方法名:test_name_func
class Test(unittest.TestCase): ....
@parameterized.expand(iterator_data, test_name_func)
def test01_xxx(self):
....
注意:以上代码只是为了演示思想,没有经过实际验证。
正则表达式来源:https://blog.csdn.net/weixin_42614447/article/details/89876335
python + unittest + request + parameterized 参数化遇到中文名称testcase不显示的问题的更多相关文章
- python测试开发django-21.admin后台表名称和字段显示中文
前言 admin后台页面表名称(默认会多加一个s)和字段名称是直接显示在后台的,如果我们想设置成中文显示需加verbose_name和verbose_name_plural属性 verbose_nam ...
- 关于SSH中tomcat下中文名称图片不显示的问题
最近做一个SSH框架的项目,用tomcat发布,需要上传图片到指定路径,然后再将图片显示在页面上.有一个问题:如果是英文名称的图片,就正常显示,可如果是中文的,它就是显示不出来,于是乎,在网上各种百度 ...
- 接口框架 python+unittest+request+HTMLTestRunner
request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项.如POST,GET最常用的两种请求 官方文档:http://docs.python-requests.org/en/mas ...
- 【selenium+Python unittest】之发送带中文附件的邮箱
完整原码如下: import smtplib from email.mime.text import MIMEText #from email.header import Header from em ...
- 接口自动化-python unittest+requests+HTMLrunner
从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...
- <自动化测试>之<使用unittest Python测试框架进行参数化测试>
最近在看视频时,虫师简单提到了简化自动化测试脚本用例中的代码量,而python中本身的参数化方法用来测试很糟糕,他在实际操作中使用了parameterized参数化... 有兴趣就查了下使用的方法,来 ...
- python之用unittest实现接口参数化示例
示例中获取参数的方法有三种: 1. 从文件(txt)中读取参数 2. 从Excel中读取参数 3. 在代码中直接写参数 def login(username,password): return 'ok ...
- 简单实现接口自动化测试(基于python+unittest)
简单实现接口自动化测试(基于python+unittest) 简介 本文通过从Postman获取基本的接口测试Code简单的接口测试入手,一步步调整优化接口调用,以及增加基本的结果判断,讲解Pytho ...
- 【转】nose-parameterized是Python单元测试框架实现参数化的扩展
原文地址: http://www.cnblogs.com/fnng/p/6580636.html 相对而言,Python下面单元测试框架要弱上少,尤其是Python自带的unittest测试框架,不支 ...
- Python 中如何实现参数化测试?
Python 中如何实现参数化测试? 之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文 ...
随机推荐
- 8. 字符串转整数 (atoi)
题目 代码 class Solution { public: int myAtoi(string str) { int res=0,sign=1; int i=str.find_first_not_o ...
- NSOperation的简单使用
1.默认情况下,NSOperation并不具备封装操作的能力,必须使用它的子类,使用NSOperation子类的方式有3种: 1> NSInvocationOperation 2> NSB ...
- JS控制台打印星星,总有你要的那一款~呐~给你小心心哦~~~❤
用JS语句,在控制台中打印星星,你要的是哪一款呢~来认领吧~ 1.左直角星星 效果: 代码: let readline=require("readline-sync"); cons ...
- angular8表格文件上传并渲染到页面(上传文本与表格,表格有两种写法--之二)
import { Component, OnInit , ViewChild, OnDestroy, AfterViewInit } from '@angular/core'; import { ST ...
- (补12月19)ORM查询优化、ORM事物操作、ORM常用字段参数、Ajax请求、Content-Type
ORM查询优化.ORM事物操作.ORM常用字段参数.Ajax请求.Content-Type Q查询进阶操作 先产生一个对象 q_obj = Q() 修改默认对象 q_obj.connector = ' ...
- pycharm设置python头文件模版
钢铁知识库,一个学习python爬虫.数据分析的知识库.人生苦短,快用python. 使用pycharm创建python文件时候,有时候需要自动生成想要的文件头,如何生成呢? 只需要以下几步: 在fi ...
- 【分析笔记】DW7888 马达驱动芯片待机模式漏电流过高的问题
发现问题 客户反馈说我们的硬件关机漏电流很大,但是拔掉电池之后再上电(仍处于关机状态)就会恢复为 16~20uA 左右.这让我也讶异,因为亲自测试过,漏电流只有 MCU 的休眠电流 16~20uA 左 ...
- KingbaseES恢复被删除数据
KingbaseES恢复被删除数据 生产环境操作请先备份整个data目录或cp 当前数据目录/home/kingbase/pg_data到新的data目录,然后在备份的data目录进行恢复被删除数据操 ...
- idea2022.2.3安装破解
转:https://www.quanxiaoha.com/article/idea-pojie.html 1 注意事项 如果是卸载了旧版本安装的本版本,安装完成后打不开,可能是旧版本的影响 找到:C: ...
- Spring框架JDBC
*Spring框架对JDBC进行简单的封装.提供了一个JDBCTemplate对象简化JDBC的开发 *步骤: 1.导入jar包 2.创建JDBCTemplate对象,以来与数据源DataSource ...