HttpRunner(16):响应中文乱码处理

响应中文乱码:

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

示例:

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

HttpRunner(16):响应中文乱码处理_第1张图片

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

HttpRunner(16):响应中文乱码处理_第2张图片 HttpRunner(16):响应中文乱码处理_第3张图片

解决方式如下:

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

4个关键字必须:

User-Agent: *****
Accept: *****
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

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

HttpRunner(16):响应中文乱码处理_第4张图片

yaml示例:

添加headers头部信息,如下图

HttpRunner(16):响应中文乱码处理_第5张图片

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

HttpRunner(16):响应中文乱码处理_第6张图片

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

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

debugtalk.py文件的代码如下:

 

# 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文件中,断言引用函数需要加引号 " ",如下图

HttpRunner(16):响应中文乱码处理_第7张图片

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

HttpRunner(16):响应中文乱码处理_第8张图片

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

variables: 变量;

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

HttpRunner(16):响应中文乱码处理_第9张图片

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

HttpRunner(16):响应中文乱码处理_第10张图片

 

你可能感兴趣的:(服务器,dubbo,python,开发语言,postman)