问题1:解决测试报告中,请求体中中文乱码问题
原本使用httprunner发送的post请求中,如果body中有中文,在测试报告中会乱码显示:
image.png
解决方法
-
1.找到通过pip安装的httprunner源码
可使用pip show httprunner
查找 -
2.打开
image.pngclient.py
修改源码:(记得导入json)
-
3.再次执行测试,已解决:
image.png
问题2:在case1中output一个变量值,然后在case2中,使用这个变量值作为请求参数和预期结果,预期结果中值显示是:LazyString($变量key)
解决方法
-
在case2中,设置一个variables变量去接收这个变量,然后再用这个variables变量去进行判断,比如:
解决后的
问题3:在问题2的基础上,发现测试报告的expect value是LazyString($变量key)
解决方法
-
修改测试报告html:
image.png
问题4:发送https
请求
解决方法
- 需要关闭SSL验证
注意点:如果teststeps
分离成多个api文档,该变量不能在cases
、suites
文件上进行声明,需要在每个需要用得上的teststeps
文件中进行声明
request:
# 关闭SSL验证
verify: False
问题5:上传图片
解决方法
- 官方文档:https://docs.httprunner.org/prepare/upload-case/
- 2.x版本:
variables:
# 上传文件,内置的函数
- file_path: "files/p2.gif"
- m_encoder: ${multipart_encoder(file = $file_path)}
request:
headers:
# 上传文件
Content-Type: ${multipart_content_type($m_encoder)}
Accept: application/json
method: POST
url: xx
verify: False
# 上传文件
data: $m_encoder
问题6:api、case的变量共享
- 1、
teststeps
文件/api提取response
的内容为变量
# 响应结果提取为变量
extract:
activityId_1: content.data
- 2、
cases
文件设置变量
# 设置变量,当前case下的step都可使用
variables:
activityName_1: activityName${random_int()}
activityId_1: activityId_1
- 3、注意点:
1.响应结果不能当成参数传递给函数(包括自定义函数),所以可以把响应结果提取成变量,然后再到cases
中设置该变量,再到api
中调用该变量
问题7:int
类型使用contains
进行判断会类型不匹配
解决方法
- 自定义函数,把预期结果和实际结果都转成
str
再进行in
判断
def int_contains(ac_value, ex_value):
"""
用于ex_value类型为int等类型的包含
:param ac_value:
:param ex_value:
:return:
"""
assert str(ex_value) in str(ac_value)
问题7:一些需要等待一段时间数据才进行的接口,比如说es插入数据需要时间
解决方法
- 在
setps
中,添加一个自带的延时hook函数
setup_hooks:
- ${sleep(1)}
网友评论