使用python+requests进行接口测试时post请求中参数为中文如何避免编码错误?

在实际工作中,当我们使用python+requests进行接口测试时,模拟post请求时,经常会遇到参数为中文的情况,如果不进行处理,就会导致编码格式不一样而出错。

举例:

当我们使用微信公众开发文档进行标签创建,创建一个中文标签,并进行断言时:

        url_params={
            "access_token":token
        }
        tag_info={"tag":{"name":"定时"}}

        tag_str=json.dumps(tag_info,ensure_ascii=False)
        #将json格式转换为字符串格式
        response=self.session.post(url='https://api.weixin.qq.com/cgi-bin/tags/create',
                                   params=url_params,
                                   data=tag_str.encode('utf-8'))
        actual_result=jsonpath.jsonpath(response.json(),'$.tag.name')[0]
#因为jsonpath返回的数据格式为列表,要取出数字需要在后面加上[0]
        self.assertEqual(actual_result,'定时')

解决编码格式:

1、将json格式的内容使用json.dumps()转换为字符串格式,并设置参数ensure_ascii=False

(因为json.dumps()会自动将中文转为Unicode编码,所以将ensure_ascii设置为False)

2、在请求中设置编码格式为utf-8(data=字符串格式数据.encode('utf-8'))

这样,就可以模拟请求是传参为中文而出现编码错误的情况了

上一篇:requests介绍与请求


下一篇:Python——requests模块