HttpRunner自动化测试之响应中文乱码处理

响应中文乱码:

  当调用接口,响应正文返回的中文是乱码时,一般是响应正文的编码格式不为 utf-8 导致,此时需要根据实际的编码格式处理

示例:

图1中 extract 提取title标题,output 输出 title 变量值,如下图2可见,输出的变量值成了乱码,图3的报告中可以看到响应的编码为 ISO-8859-1

解决方式如下:

**方式一,**添加headers头部信息,如下图

4个关键字必须:

User-Agent: *****

Accept: *****

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

上述头部信息关键字,可通过F12键获取

yaml示例:

添加headers头部信息,如下图

添加头部执行后,输出的变量值为utf-8 中文编码;如下图

**方式二,**通过 debugtalk.py 辅助函数编写代码然后yaml文件中调用;

python中内置函数 encode() 和 decode() ,encode()是编码、decode()是解码

debugtalk.py文件的代码如下:

python 复制代码
# encode编码   decode解码
 
# iso8859-1 编码,解码成 utf-8
def iso8859_to_utf8(str):
    return str.encode("iso8859-1").decode("utf-8")
 
# utf-8 编码,解码成 iso8859-1
def utf8_to_iso8859(str):
    return str.encode("utf-8").decode("iso8859-1")
 
# unicode_escape 编码,解码成 utf-8
def unicode_escape_to_utf8(str):
    return str.encode("unicode_escape").decode("utf-8")

在yaml文件中,断言引用函数需要加引号 " ",如下图

测试报告展示成功,断言成功,如下图:

上述是通过utf-8进行断言比对,还可以通过 iso8859-1 进行断言比对;如下图:

variables: 变量;

把预期结果先做个变量然后转成和实际结果一样的编码,最后再通过断言进行比对,如下图:

测试报告展示成功,断言成功,如下图:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
zzzzzz3103 小时前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode3 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207019 小时前
如何搭建本地yum源(上)
运维
程序员龙叔4 天前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz4 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理