httprunner系列09——處理亂碼的兩種處理思路


前言

背景: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教育']

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM