精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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

開發 開發工具 后端 自動化
在接口測試的過程中,很多時候會用到對CSV的讀取操作,本文主要說明Python3對CSV的寫入和讀取。

在接口測試的過程中,很多時候會用到對CSV的讀取操作,本文主要說明Python3對CSV的寫入和讀取。

1. 需求

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

  • token為必填項
  • mobile,email 必填其中1項
  • mobile為手機號,email為email格式

2. 方案

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

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

流程如下圖

3. 實現

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

  • csv 讀寫CSV文件
  • json
  • requests 發起請求,獲取響應結果
  • unittest 測試用例調度

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

(3) reader_CSV函數代碼示例

  1. import csv 
  2. import json 
  3. import requests 
  4. import time 
  5. import unittest 
  6. def readCSV(self,filename): 
  7.  ''' 
  8.  :param filename: 需要讀取的數據文件 
  9.  :return: [{data1},{data2}...] 
  10.  ''' 
  11.  datas = [] 
  12.  try: 
  13.  #以DictReader的方式讀取數據文件,方便與json互做轉換 
  14.  with open(filename,'r') as csvfile : 
  15.  #從文件里讀取到的數據轉換成字典列表的格式 
  16.  reader = csv.DictReader(csvfile) 
  17.  for row in reader: 
  18.  data = {} 
  19.  data['id'] = row['id'] 
  20.  data['url'] = row['url'] 
  21.  data['token'] = str(row['token']) 
  22.  data['mobile'] = row['mobile'] 
  23.  data['email'] = row['email'] 
  24.  data['expect'] = json.dumps(row['expect']) \ 
  25.  if isinstance(row['expect'],dict) \ 
  26.  else row['expect'] #如果expect讀取出來的不是json則取其原值,否則轉為json格式保存到result里 
  27.  datas.append(data) 
  28.  return datas 
  29.  #如果文件找不到,返回空的datas 
  30.  except FileNotFoundError: 
  31.  print("文件不存在",filename) 
  32.  return datas 

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

  1. def get_request(self,url,params): 
  2.  ''' 
  3.  通用的調用GET接口方法 
  4.  :param url:string 接口路徑 
  5.  :param params:{"":"","":""} 需要傳入的參數 
  6.  :return: response響應體 
  7.  ''' 
  8.  print("調用API...") 
  9.  r = requests.get(url,paramsparams=params) 
  10.  print(r.text) 
  11.  return r 
  12. def post_request(self,url,params): 
  13.  ''' 
  14.  通用的調用POST接口方法 
  15.  :param url: string 接口路徑 
  16.  :param params: {"":"","":""} 需要傳入的參數 
  17.  :return:response響應體 
  18.  ''' 
  19.  print("調用API...") 
  20.  r = requests.post(url,params=json.dumps(params)) #post的方法必須用json.dumps()轉化成json格式 
  21.  print(r.text) 
  22.  return r 

(5) assert_Result函數示例

  1. def assertResult(self,except_value,real_value): 
  2.  ''' 
  3.  校驗樣本字符串中是否包含指定字符串 
  4.  :param except_value: string 指定字符串 
  5.  :param real_value: string 樣本字符串 
  6.  :return: Boolean 樣本中包含指定字符串返回True,否則返回False 
  7.  ''' 
  8.  ifsuccess = except_value in str(real_value) 
  9.  return ifsuccess 

(6) write_CSV函數示例

  1. def writeCSV(self,filename,results): 
  2.  ''' 
  3.  寫入csv文件指定內容 
  4.  :param filename: string 需要寫入的文件名稱 
  5.  :param results: [{data1},{data2},...] 寫入的內容 
  6.  :return: 無 
  7.  ''' 
  8.  print("寫文件:",filename) 
  9.  #以DictWriter的方式寫文件 
  10.  with open(filename,'w+') as csvfile: 
  11.  headers="id,url,token,mobile,email,expect,real_value,assert_value".split(",") 
  12.  writer = csv.DictWriter(csvfile,fieldnames=headers
  13.  #寫表頭 
  14.  writer.writeheader() 
  15.  #寫數據 
  16.  if results.__len__() > 0 : 
  17.  for result in results: 
  18.  writer.writerow(result) 
  19.  csvfile.close() 

(7) test_interface1函數示例

  1. def test_interface1(self): 
  2.  
  3.  #指定讀取的數據文件名稱 
  4.  data_file = "../data/data.csv" 
  5.  
  6.  #指定最終結果生成的數據文件名稱 
  7.  result_file = "../data/result_{}.csv".format(str(time.time()).split(".")[0]) 
  8.  
  9.  #讀取指定文件的數據 
  10.  datas = self.readCSV(data_file) 
  11.  
  12.  #數據文件有內容則調用接口,否則直接測試結束 
  13.  if datas.__len__() > 0: 
  14.  results =[] 
  15.  
  16.  #獲取數據文件里的每一行 
  17.  for testcase in datas : 
  18.  result = {} 
  19.  result["id"] = testcase["id"] 
  20.  result["url"] = testcase["url"] 
  21.  result["token"] = testcase["token"] 
  22.  result["mobile"] = testcase["mobile"] 
  23.  result["email"] = testcase["email"] 
  24.  result["expect"] = testcase["expect"] 
  25.  
  26.  #組裝參數 
  27.  params = { 
  28.  "token":result["token"], 
  29.  "mobile":result["mobile"], 
  30.  "email":result["email"] 
  31.  } 
  32.  
  33.  #調用API接口,獲取響應結果 
  34.  real_value = self.get_request(result["url"],params) 
  35.  
  36.  #調用assert方法,檢查預期結果是否在響應結果中存在 
  37.  assert_value = self.assertResult(result["expect"],real_value.text) 
  38.  result["real_value"] = real_value.text 
  39.  result["assert_value"] = assert_value 
  40.  #獲取每一行里的所有字段以及實際結果和驗證結果 
  41.  results.append(result) 
  42.  #執行完所有記錄后,將所有結果寫入result.csv 
  43.  self.writeCSV(result_file,results) #寫入csv文件 
  44.  print("測試結束") 

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

4. 總結

python封裝了很多方法,對于測試來說開發速度相對較快,接口自動化測試如果采用CSV管理的數據驅動方式,使用csv+requests是測試開發不容錯過的利器之一。

【本文是51CTO專欄機構“豈安科技”的原創文章,轉載請通過微信公眾號(bigsec)聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2018-05-11 13:39:05

PythonCSV接口測試

2023-12-25 09:52:32

2019-02-19 15:37:18

自動化測試數據

2024-02-26 09:00:00

生成式AI主機自動化

2021-12-30 07:33:03

數據庫

2022-12-26 12:30:28

接口測試

2023-09-13 11:40:12

2024-03-20 13:19:53

2010-08-12 18:08:03

ibmdwRational

2012-02-27 17:34:12

Facebook自動化

2023-02-15 08:21:22

2010-09-27 09:13:36

Visual Stud

2021-08-17 09:00:00

架構PythonWeb

2022-08-05 22:15:26

Python自動化測試

2022-02-17 10:37:16

自動化開發團隊預測

2022-08-14 16:11:23

Python自動化測試數據

2023-09-01 09:21:03

Python自動化測試

2024-06-11 10:41:14

2024-08-19 10:21:37

接口Python魔法方法

2023-03-27 15:37:43

自動化測試開發
點贊
收藏

51CTO技術棧公眾號

在线观看国产成人av片| 午夜成人免费视频| 91日韩久久| 国产成人自拍视频在线| 成人羞羞网站入口免费| 日韩午夜av一区| 爱福利视频一区二区| 91官网在线| 成人av电影在线| 国产精品亚洲片夜色在线| 欧美日韩一级大片| 精品色999| 欧美xfplay| 亚洲少妇久久久| 成人福利电影| 中文字幕一区二| 久久久亚洲综合网站| 国产麻豆91视频| 久久午夜精品一区二区| 欧美高清视频在线播放| 日本精品在线观看视频| 99久热这里只有精品视频免费观看| 色视频成人在线观看免| 欧美亚洲黄色片| 波多野结衣在线网站| www.亚洲色图| 97人人澡人人爽| 中文字幕理论片| 激情婷婷亚洲| 欧美超级免费视 在线| 欧美 日韩 成人| 亚洲精品aaaaa| 亚洲第一天堂av| 特种兵之深入敌后| 91麻豆精品一二三区在线| 91福利在线看| 99久久久无码国产精品6| 欧美亚洲天堂| 一区二区三区在线播放| 中文字幕色一区二区| 国产高清视频在线观看| 91麻豆.com| 久久国产精品免费一区| 人妻无码中文字幕| 99视频精品免费视频| 国产精品一区二区三区四区五区| 国产视频手机在线观看| 九九九久久久精品| 国产精品中文字幕久久久| 免费黄色片视频| 老司机午夜精品视频在线观看| 97久久超碰福利国产精品…| 精品深夜av无码一区二区老年| 亚洲国产精品久久久天堂| 色偷偷噜噜噜亚洲男人| 黄色av免费播放| 欧美手机视频| 日韩中文在线中文网三级| 日本黄色激情视频| 99国产精品免费视频观看| 日韩视频亚洲视频| 韩国一级黄色录像| 亚洲男女av一区二区| 日韩一二三在线视频播| 手机在线免费看片| 午夜国产精品视频免费体验区| 精品视频9999| 日本一级淫片色费放| 一本色道久久综合亚洲精品不卡| 97视频免费在线观看| 国产69精品久久久久久久久久| 国产欧美精品| 国产精品av网站| 91精品中文字幕| 国产精品一二三四五| 国产精品国产精品国产专区蜜臀ah | 亚洲精品国产a久久久久久| 91.com在线| 欧美香蕉视频| 欧美裸体一区二区三区| 亚洲美女精品视频| 亚洲精品国产精品粉嫩| 中文字幕免费国产精品| 麻豆视频在线观看| 免费视频一区二区三区在线观看| 国产精品一区二区久久精品 | 日韩成人精品一区二区三区| 91精品国产综合久久久久久久| 男插女视频网站| 亚洲最大在线| 伦理中文字幕亚洲| 青青青国产在线| 九九精品视频在线看| 国产欧美日韩在线播放| 调教视频免费在线观看| 亚洲第一久久影院| 亚洲娇小娇小娇小| 欧美黄色录像| www.精品av.com| 日本三级一区二区| 国模大尺度一区二区三区| 国语精品中文字幕| 久做在线视频免费观看| 欧美午夜电影在线| 男生和女生一起差差差视频| 免费看成人哺乳视频网站| 欧美成人精品激情在线观看| 免费一级a毛片| 波多野结衣视频一区| 一区二区三区|亚洲午夜| 黄色漫画在线免费看| 制服丝袜日韩国产| 蜜臀久久99精品久久久久久| 亚洲福利国产| 亚洲一区中文字幕在线观看| 精品成人一区二区三区免费视频| 一区二区三区四区高清精品免费观看| 午夜免费精品视频| 日韩欧美影院| 欧美极品少妇与黑人| 国产尤物在线观看| 国产欧美一区二区精品性| 两根大肉大捧一进一出好爽视频| 精品一级视频| 久久精品国产欧美激情| 日韩黄色片网站| 91小视频免费看| av在线观看地址| 日韩精品一区国产| 日韩一级黄色av| 亚洲专区在线播放| 国产欧美一区二区三区在线看蜜臀 | 91在线视频在线观看| 成人免费高清视频| 亚洲av综合色区| av成人在线网站| 色爱av美腿丝袜综合粉嫩av| 无码视频一区二区三区| 久久久久久久综合狠狠综合| 播放灌醉水嫩大学生国内精品| 国产成人澳门| 久久久日本电影| 国产高清精品软件丝瓜软件| 亚洲欧美一区二区久久| 精产国品一二三区| 亚洲一区欧美| 亚洲一区二区三区久久| v片在线观看| 精品日韩在线一区| 国产在线观看成人| 成人午夜免费av| 国产91xxx| 美女毛片一区二区三区四区| 日本欧美爱爱爱| 第一页在线观看| 欧美欧美欧美欧美| 日本a级片视频| 粉嫩欧美一区二区三区高清影视| 黄色三级中文字幕| 老汉色老汉首页av亚洲| 97视频com| 国产区高清在线| 欧美精品 国产精品| 91麻豆精品久久毛片一级| 国产主播一区二区| 国产精品视频网站在线观看| 九色丨蝌蚪丨成人| 日本午夜人人精品| 95在线视频| 日韩午夜在线影院| 青青操免费在线视频| www国产成人| 中文字幕22页| 在线观看不卡| 日韩av一区二区三区在线| 精品三级在线| 午夜精品一区二区三区视频免费看| 久久米奇亚洲| 午夜视频一区二区在线观看| 欧美日韩国产精品自在自线| 亚洲精品自拍视频在线观看| 久久99精品国产麻豆婷婷洗澡| wwwjizzjizzcom| 欧美人妖在线观看| 国产精品久久久久久久久久三级 | 日韩激情网站| 国产精品日韩在线一区| 在线看三级电影| 国产视频久久久久久久| 91国内精品视频| 调教+趴+乳夹+国产+精品| 大吊一区二区三区| 不卡一卡二卡三乱码免费网站 | 国产一区亚洲一区| 内射国产内射夫妻免费频道| 日韩激情在线| 精品国产中文字幕| 成人永久在线| 日韩暖暖在线视频| 久久电影网站| 色婷婷综合久久久久| 亚洲欧美丝袜中文综合| 678五月天丁香亚洲综合网| 国产精品老女人| 一区av在线播放| 国产三级精品三级观看| 久久综合九色综合97婷婷| 免费国偷自产拍精品视频| 老色鬼久久亚洲一区二区| 91动漫在线看| 91精品啪在线观看国产81旧版 | 亚洲久久久久久| 激情另类小说区图片区视频区| 人妻内射一区二区在线视频 | 亚洲日本电影在线| 性猛交娇小69hd| 96av麻豆蜜桃一区二区| 亚洲成人av免费观看| 免费av网站大全久久| 国内性生活视频| 狠狠88综合久久久久综合网| 在线天堂一区av电影| 国产传媒欧美日韩成人精品大片| 国产成人成网站在线播放青青| 亚洲精品777| 国产精品久久久久久久久粉嫩av| 亚洲精品成人图区| 国外视频精品毛片| 日韩激情美女| 免费99精品国产自在在线| 永久免费av在线| 中文字幕日韩综合av| 国产视频精品久久| 亚洲免费一级电影| 少妇性bbb搡bbb爽爽爽欧美| 亚洲精品白浆高清久久久久久| 黄色av小说在线观看| 日韩一级二级三级精品视频| 国产人妻精品一区二区三| 欧美日韩视频在线第一区| 伊人网免费视频| 欧美色视频一区| 在线播放国产一区| 欧美日韩国产另类一区| 国产露脸国语对白在线| 制服丝袜日韩国产| 亚洲xxxx天美| 欧美精品一区二区高清在线观看| 亚洲乱码国产乱码精品精软件| 日韩精品在线网站| 韩国av免费在线观看| 欧美精品一区二区三区在线| 特级丰满少妇一级aaaa爱毛片| 日韩av在线一区| 毛片免费在线观看| 中文字幕亚洲自拍| www在线观看播放免费视频日本 | 黄色亚洲网站| 国产精品高潮粉嫩av| 日本电影久久久| caoporen国产精品| 久久久免费毛片| 先锋影音欧美| 天天超碰亚洲| 日韩 欧美 视频| 老鸭窝毛片一区二区三区| 黄色免费网址大全| 狠狠狠色丁香婷婷综合久久五月| 师生出轨h灌满了1v1| av资源网一区| 国产伦精品一区二区三区视频女| 中文字幕亚洲精品在线观看| 欧美日韩精品亚洲精品| 图片区日韩欧美亚洲| 中文字幕av无码一区二区三区| 91精品在线免费观看| 亚洲欧美另类综合| 亚洲美女av黄| 精品176二区| 69**夜色精品国产69乱| 外国电影一区二区| 99热在线播放| 欧美三级三级| 免费人成在线观看视频播放| 日韩综合在线视频| 台湾佬美性中文| 国产亚洲综合性久久久影院| 日韩激情小视频| 日韩欧美福利视频| 97人妻精品一区二区三区软件 | 欧美日韩国产首页| 色一情一乱一区二区三区| 在线一区二区日韩| www欧美xxxx| 国产在线拍揄自揄视频不卡99| 精品丝袜久久| 欧美日韩一区二区三区电影| 免费看亚洲片| 亚洲国产精品狼友在线观看| 国产喷白浆一区二区三区| 国产精品50页| 7777精品伊人久久久大香线蕉最新版 | 亚洲精品久久久一区二区三区| 日本免费在线视频| 1769国内精品视频在线播放| 韩国三级成人在线| 日韩伦理一区二区三区av在线| 亚洲天堂偷拍| 亚洲第一天堂久久| 久久精品水蜜桃av综合天堂| 久久99久久98精品免观看软件| 欧美色区777第一页| 午夜国产在线观看| 欧美精品久久久久a| 香蕉久久一区| 色一情一乱一伦一区二区三区丨 | 手机免费看av片| 18成人在线视频| 久久久999久久久| 国产丝袜一区二区三区| √8天堂资源地址中文在线| 亚洲资源在线看| 日韩在线观看一区 | 亚洲天堂av在线免费| 超碰在线最新网址| 147欧美人体大胆444| 欧美成人自拍| 日本 片 成人 在线| 国产人久久人人人人爽| 黄色片中文字幕| 亚洲精品资源美女情侣酒店| 黄毛片在线观看| 久久久国产精品一区二区三区| 亚洲天堂男人| 国产性生活毛片| 五月天一区二区三区| 亚洲精品国产精| 欧美激情亚洲自拍| 97成人在线| 国产日本在线播放| caoporen国产精品视频| 久草视频在线观| 日韩经典第一页| 在线精品亚洲欧美日韩国产| 久久精品国产综合精品 | 亚洲一区二区三区四区在线| 超碰免费在线97| 久久人91精品久久久久久不卡| 精品欠久久久中文字幕加勒比| www.成年人视频| av高清不卡在线| 手机看片久久久| 中文字幕亚洲综合| 亚洲欧洲日韩精品在线| 91网站在线观看免费| 成人免费视频视频| 男女视频免费看| 亚洲免费电影在线观看| 欧美视频第一| 狠狠精品干练久久久无码中文字幕| 丁香五精品蜜臀久久久久99网站 | 日韩视频在线一区二区三区| 国产ts丝袜人妖系列视频 | www视频在线| 韩国精品美女www爽爽爽视频| 麻豆一区二区麻豆免费观看| 男人天堂网视频| 亚洲欧美综合另类在线卡通| 亚洲黄色在线观看视频| 91国自产精品中文字幕亚洲| 成人羞羞网站| 亚洲美女精品视频| 欧美日韩一区二区精品| 最新电影电视剧在线观看免费观看| 成人午夜在线影院| 亚洲精品资源| 91无套直看片红桃在线观看| 日韩欧美亚洲另类制服综合在线 | 欧美日韩亚洲视频| 欧美成人hd| 国内精品视频免费| 美女视频一区二区| 国产午夜精品无码一区二区| 亚洲一级黄色片| 一区二区日韩| av丝袜天堂网| 亚洲午夜国产一区99re久久| 国产大片在线免费观看| 91久久偷偷做嫩草影院| 久久永久免费| 久久网中文字幕| 永久免费精品影视网站| 91麻豆精品国产91久久久久推荐资源| 国产第一页视频| 亚洲一区二区三区四区五区中文| 国产大片在线免费观看| 国产精品一区二区三区免费| 精品一区在线看| 在线永久看片免费的视频| 久久99热精品|