Httprunner_遇到的问题及其解决方法

问题1:解决测试报告中,请求体中中文乱码问题

原本使用httprunner发送的post请求中,如果body中有中文,在测试报告中会乱码显示:


image.png
解决方法
  • 1.找到通过pip安装的httprunner源码
    可使用pip show httprunner查找

  • 2.打开client.py
    修改源码:(记得导入json)

    image.png

  • 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文档,该变量不能在casessuites文件上进行声明,需要在每个需要用得上的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)}

你可能感兴趣的:(Httprunner_遇到的问题及其解决方法)