前言

背景:httprunner底层也是request,所以同样存在乱码问题

步骤:

1.响应正文乱码,先从报表中查看响应头中的encoding

 

 

 2.搜索相关编码转换的代码

if __name__=='__main__':
    print('端午'.encode('utf8').decode('iso8859-1'))
    print('端å'.encode('iso8859-1').decode('utf8'))     #此句报错,如下
报错信息:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe5 in position 3: unexpected end of dataˆ
百度🉐️:修改字符集参数,一般这种情况出现得较多是在国标码(GBK)和utf8之间选择出现了问题。
出现异常报错是由于设置了decode()方法的第二个参数errors为严格(strict)形式造成的,因为默认就是这个参数,将其更改为ignore等即可。
decode("utf8","ignore")

 

 3.在debugtalk.py中编写函数

 

 实战:

思路一:响应正文出现的乱码不处理,假设httprunner要做中文断言,可对期望结果进行转码处理。

- config:
    name: 'open hnxmxit mainpage'
    base_url: 'http://www.hnxmxit.com'

- test:
    name: 'open hnxmxit mainpage'
    variables:
      - temp_except: '新梦想IT教育_软件测试培训_Java培训_Python培训_长沙良心IT教育'
      - except: ${decode_utf8($temp_except)}
    request:
      url: /
      method: GET
    extract:
      - temp_title: <title>(.+?)</title>
    validate:
      - eq: ['status_code',200]
      - eq: [$temp_title,$except]

思路二:转换实际结果

#乱码问题实战,思路二:转换实际结果
- config:
    name: 'open hnxmxit mainpage'
    base_url: 'http://www.hnxmxit.com'

- test:
    name: 'open hnxmxit mainpage'
    request:
      url: /
      method: GET
    extract:
      - temp_title: <title>(.+?)</title>
    validate:
      - eq: ['status_code',200]
      - eq: ['${decode_utf8($temp_title)}','新梦想IT教育_软件测试培训_Java培训_Python培训_长沙良心IT教育']


思路三:由于extract中不能调用debugtalk的函数,所以放到测试步骤中转码
#乱码问题实战,思路三:测试步骤中转换
- config:
    name: 'open hnxmxit mainpage'
    base_url: 'http://www.hnxmxit.com'

- test:
    name: 'open hnxmxit mainpage'
    variables:
      - except: '新梦想IT教育_软件测试培训_Java培训_Python培训_长沙良心IT教育'
      - title: ${decode_utf8($temp_title)}
    request:
      url: /
      method: GET
    extract:
      - temp_title: <title>(.+?)</title>
    validate:
      - eq: ['status_code',200]
      - eq: [$title,'新梦想IT教育_软件测试培训_Java培训_Python培训_长沙良心IT教育']

  

posted on 2020-06-23 19:50  喵小超  阅读(1196)  评论(0编辑  收藏  举报