最近有學員向筆者多次反應,測試過程中,比如登錄,登錄時密碼一般是經過加密之后再進行登錄的,如果在進行測試時填寫的密碼是明文的話,那么進行接口測試時必然是失敗的,那么要經過怎樣的處理才能登錄成功呢?
那么今天先簡單處理密碼是md5加密的情況下,使用python進行接口測試時,python如何處理;
當前使用的是python3.7版本;
Python3.7在處理md5加密時,需要導入模塊hashlib;
python的hashlib提供了常見的摘要算法,如MD5,SHA1等等。
先來看一下python是如何把字符串加密成MD5字符串的;
import hashlib
def MD5_demo(str):
md= hashlib.md5()# 創建md5對象
md.update(str.encode(encoding='utf-8'))
return md.hexdigest()
if __name__=="__main__":
# 待加密信息
str = '123456'
md5_str = MD5_demo(str)
print('加密后為 :' + md5_str)
hexdigest()在英語中hex有十六進制的意思,因此該方法是返回摘要,作為十六進制數據字符串值
注意:update(str.encode(encoding='utf-8'))這個函數里面需要對字符串進行編碼,否則會報TypeError: Unicode-objects must be encoded before hashing
下面以禪道登陸接口為例進行處理:
通過fiddler抓包發現,登陸的密碼是加密處理的:
以下是代碼處理結果:
import requests
import hashlib
def MD5_login(str):
zt_pwd = hashlib.md5()
zt_pwd.update(str.encode(encoding='utf-8'))
return zt_pwd.hexdigest()
password = '123456' #登陸的用戶密碼=='123456'
url = 'http://192.168.1.105:81/zentao/user-login-L3plbnRhby8=.html'
data = {'account':'admin','password':MD5_login(password),'referer':'/zentao/'}
response = requests.post(url,data=data) # 發送post請求
print(response.content.decode('utf-8'))