91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用Python實現數據驅動的接口自動化測試

發布時間:2021-02-18 10:40:18 來源:億速云 閱讀:134 作者:小新 欄目:開發技術

這篇文章主要介紹了怎么利用Python實現數據驅動的接口自動化測試,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1、需求

某API,GET方法,token,mobile,email三個參數

  • token為必填項

  • mobile,email 必填其中1項

  • mobile為手機號,email為email格式

2、方案

針對上面的API,在做接口測試時,需要的測試用例動輒會多達10+, 這個時候采用數據驅動的方式將共性的內容寫入配置文件或許會更合適。

這里考慮把API、參數、以及預期結果預行在格式化的CSV里保存,利用csv組件從CSV里讀取URL、參數以及預期結果,Requests組件發起請求,將響應結果與預期結果進行比對,最后把比對結果寫到結果CSV。

流程如下圖 ?

怎么利用Python實現數據驅動的接口自動化測試

3、實現

1、在上代碼之前,先安裝好如下幾個組件:

  • csv  讀寫CSV文件

  • json

  • requests  發起請求,獲取響應結果

  • unittest    測試用例調度

2、data.csv(本示例選取部分用例)

怎么利用Python實現數據驅動的接口自動化測試

3、reader_CSV函數代碼示例

import csv
import json
import requests
import time
import unittest
def readCSV(self,filename):
 '''
 :param filename: 需要讀取的數據文件
 :return: [{data1},{data2}...]
 '''
 datas = []
 try:
 #以DictReader的方式讀取數據文件,方便與json互做轉換
 with open(filename,'r') as csvfile :
 #從文件里讀取到的數據轉換成字典列表的格式
 reader = csv.DictReader(csvfile)
 for row in reader:
 data = {}
 data['id'] = row['id']
 data['url'] = row['url']
 data['token'] = str(row['token'])
 data['mobile'] = row['mobile']
 data['email'] = row['email']
 data['expect'] = json.dumps(row['expect']) \
 if isinstance(row['expect'],dict) \
 else row['expect'] #如果expect讀取出來的不是json則取其原值,否則轉為json格式保存到result里
 datas.append(data)
 return datas
 #如果文件找不到,返回空的datas
 except FileNotFoundError:
 print("文件不存在",filename)
 return datas

4、request_URL函數示例(包含GET請求和POST請求2個方法)

def get_request(self,url,params):
 '''
 通用的調用GET接口方法
 :param url:string 接口路徑
 :param params:{"":"","":""} 需要傳入的參數
 :return: response響應體
 '''
 print("調用API...")
 r = requests.get(url,params=params)
 print(r.text)
 return r
def post_request(self,url,params):
 '''
 通用的調用POST接口方法
 :param url: string 接口路徑
 :param params: {"":"","":""} 需要傳入的參數
 :return:response響應體
 '''
 print("調用API...")
 r = requests.post(url,params=json.dumps(params)) #post的方法必須用json.dumps()轉化成json格式
 print(r.text)
 return r

5、assert_Result函數示例

def assertResult(self,except_value,real_value):
 '''
 校驗樣本字符串中是否包含指定字符串
 :param except_value: string 指定字符串
 :param real_value: string 樣本字符串
 :return: Boolean 樣本中包含指定字符串返回True,否則返回False
 '''
 ifsuccess = except_value in str(real_value)
 return ifsuccess

6、write_CSV函數示例

def writeCSV(self,filename,results):
 '''
 寫入csv文件指定內容
 :param filename: string 需要寫入的文件名稱
 :param results: [{data1},{data2},...] 寫入的內容
 :return: 無
 '''
 print("寫文件:",filename)
 #以DictWriter的方式寫文件
 with open(filename,'w+') as csvfile:
 headers="id,url,token,mobile,email,expect,real_value,assert_value".split(",")
 writer = csv.DictWriter(csvfile,fieldnames=headers)
 #寫表頭
 writer.writeheader()
 #寫數據
 if results.__len__() > 0 :
 for result in results:
 writer.writerow(result)
 csvfile.close()

7、test_interface1函數示例

def test_interface1(self):

 #指定讀取的數據文件名稱
 data_file = "../data/data.csv"

 #指定最終結果生成的數據文件名稱
 result_file = "../data/result_{}.csv".format(str(time.time()).split(".")[0])

 #讀取指定文件的數據
 datas = self.readCSV(data_file)

 #數據文件有內容則調用接口,否則直接測試結束
 if datas.__len__() > 0:
 results =[]

 #獲取數據文件里的每一行
 for testcase in datas :
 result = {}
 result["id"] = testcase["id"]
 result["url"] = testcase["url"]
 result["token"] = testcase["token"]
 result["mobile"] = testcase["mobile"]
 result["email"] = testcase["email"]
 result["expect"] = testcase["expect"]

 #組裝參數
 params = {
 "token":result["token"],
 "mobile":result["mobile"],
 "email":result["email"]
 }

 #調用API接口,獲取響應結果
 real_value = self.get_request(result["url"],params)

 #調用assert方法,檢查預期結果是否在響應結果中存在
 assert_value = self.assertResult(result["expect"],real_value.text)
 result["real_value"] = real_value.text
 result["assert_value"] = assert_value
 #獲取每一行里的所有字段以及實際結果和驗證結果
 results.append(result)
 #執行完所有記錄后,將所有結果寫入result.csv
 self.writeCSV(result_file,results) #寫入csv文件
 print("測試結束")

8、result_1523956055.csv(本示例中的測試結果請忽略)

怎么利用Python實現數據驅動的接口自動化測試

感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎么利用Python實現數據驅動的接口自動化測試”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

十堰市| 湛江市| 大洼县| 阿拉善右旗| 舒城县| 阳新县| 社旗县| 诏安县| 嘉善县| 安国市| 咸宁市| 保康县| 双鸭山市| 扎鲁特旗| 民乐县| 广水市| 博客| 金寨县| 都匀市| 安吉县| 剑河县| 鹤岗市| 修武县| 前郭尔| 铜鼓县| 新乡县| 雷州市| 普格县| 绵竹市| 剑川县| 环江| 泸水县| 红安县| 内黄县| 嘉善县| 麻江县| 揭西县| 拉孜县| 宣恩县| 梁河县| 重庆市|