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