在當前網際網路產品更新迭代的快節奏下,回歸測試的時間被嚴重壓縮,在金融領域和其他網際網路應用場景下,支付、轉帳、清算往往是核心功能,為了確保資金安全和快速到帳,接口在對用戶名、帳戶名中的特殊字符的正確處理顯得尤為重要。
特殊字符極其豐富,手工測試往往需要耗費大量成本,接口自動化測試因其實現簡單、維護成本低、容易提高覆蓋率等特點,越來越受重視。
Python由於可移植性好、第三方庫豐富、上手簡單而成為一種便捷高效的接口自動化測試工具。使用python向接口發送請求,一般包含以下步驟:
1.請求的組裝:請求信息一般包含接口的URL,以及一些其他可能需要的信息,比如headers,post請求需要用的data等;
2.請求的發送:請求組裝好後進行請求的發送,一般分為GET和POST方法,如果需要向接口傳輸數據,可以在data中傳輸,並獲取返回數據;
3.響應的解析:接收返回的數據並進行解析。
Python實現了成熟的請求方法,目前新版的python3版本較好地支持第三方庫requests,靈活組裝請求,發送請求,獲取響應信息,支持JSON、文件等多種數據傳輸格式。
安裝好requests後,導入,並簡單組裝一個get請求:
#導入requests包
import requests
#接口URL,這裡以一個虛擬網址為例
url = 『http://test.org』
response = requests.get(url)
print(response.txt)
帶有數據的post請求:
import requests
url = "http://test.org/post"
data = '''{
"name": "張三",
"age": 18
}'''
response = requests.post(url=url, data=data)
print(response.text)
在日常接口測試中,經常需要設計反向案例驗證接口對於異常場景的覆蓋,比如對特殊字符的處理,依賴人工輸入驗證比較低效,利用python讀取特殊字符集的帳號,傳入請求數據中,即可快速完成特殊字符集的接口測試,滿足多種場景的測試。
利用python的csv模塊讀取儲存字符集的csv文件的方法如下:
import csv
with open('data.csv', 'r') as f:
reader = csv.reader(f)
print(type(reader))
for row in reader:
print(row)
下面以簡單的匯款場景為例,進行特殊字符集的接口測試。首先構造接口的輸入數據,以字典格式定義;讀取特殊字符集,以列表儲存;接下來就可以構造請求內容:遍歷列表,替換帳戶名中的字符為特殊字符,發起請求,讀取響應結果。具體步驟和代碼如下。
import requests, csv
url = 『http://kuahangzhuanzhang.org/post』
#構造輸入數據
data = {
「sendaccnm」: 「王小林」,
「sendaccno」: 「1234567890」,
「sendbkno」: 「103100000026」,
「recvaccnm」: 「馬小騰」,
「recvaccno」: 「2345678901」,
「recvbkno」: 「105100000017」
}
#定義列表,讀取特殊字符集文件,列表儲存
li = []
with open('data.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
li.append(row[0])
#替換data中的數據,產生帶有特殊字符的戶名數據並發起請求
for i in range(len(li)):
new_accnm = data.get("sendaccnm").replace(data.get("sendaccnm")[1],li[i])
data["sendaccnm"]=new_accnm
print(data) #可列印一下替換後的數據
response = requests.post(url=url, data=data)
print(response.text) #列印響應數據
請求數據中,原帳戶名都已經被替換成帶有特殊字符的帳戶名,對於生僻字、少數民族姓名、外國人姓名等含特殊字符的場景,實現了特殊字符的接口自動化測試。