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: 变量;

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

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

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

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

相关推荐
Miraitowa_cheems10 分钟前
LeetCode算法日记 - Day 73: 最小路径和、地下城游戏
数据结构·算法·leetcode·职场和发展·深度优先·动态规划·推荐算法
Swift社区1 小时前
LeetCode 400 - 第 N 位数字
算法·leetcode·职场和发展
玉树临风江流儿3 小时前
Linux驱动开发总结速记
linux·运维·驱动开发
七宝大爷3 小时前
GPU服务器深度解析:H100/H200的“机头”与“模组”架构详解
运维·服务器·架构·h100·h200
gd63213744 小时前
银河麒麟 aarch64 linux 里面的 qt 怎么安装kit
linux·服务器·qt
A-花开堪折4 小时前
Qemu 嵌入式Linux驱动开发
linux·运维·驱动开发
磊灬泽4 小时前
【Linux驱动开发】PWM子系统-servo
linux·运维·算法
郝学胜-神的一滴5 小时前
Linux系统函数stat和lstat详解
linux·运维·服务器·开发语言·c++·程序人生·软件工程
Mr.亮先生5 小时前
常用、高效、实用的 Linux 服务器监控与运维工具清单
linux·运维·服务器
王道长服务器 | 亚马逊云5 小时前
AWS CloudWatch Logs Insights:实时日志分析,让服务器问题无所遁形
服务器·云计算·aws