精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品亚洲永久免费精品| 亚洲欧洲综合另类| 91高清免费视频| 真实乱视频国产免费观看 | 美女福利一区二区| 日本一区二区三区高清不卡 | 日韩第一区第二区| 图片区小说区国产精品视频| 偷拍视频一区二区| 国产熟女一区二区丰满| 国产美女精品| 久久久久北条麻妃免费看| 黄色av网址在线观看| 国产一区二区三区影视| 一级特黄大欧美久久久| 日本不卡一区二区三区视频| 99热这里只有精| 小嫩嫩精品导航| 久久中文字幕视频| 亚洲专区区免费| 激情视频亚洲| 欧洲精品一区二区三区在线观看| 成年丰满熟妇午夜免费视频| 国模吧精品人体gogo| 精品亚洲国产成人av制服丝袜 | 久久激情一区| 欧美多人爱爱视频网站| 阿v天堂2014| 四季av一区二区| 免费毛片在线| 国产成人精品免费网站| 国产精品嫩草视频| 国产情侣自拍av| 欧美喷水视频| 日韩在线观看精品| 国产美女免费无遮挡| 爱爱精品视频| 日韩午夜av一区| 久久人人爽av| 欧美性片在线观看| 欧美色xxxx| 男人添女人荫蒂免费视频| 精产国品自在线www| 久久久精品黄色| 精品无码久久久久久久动漫| 成人小说亚洲一区二区三区| 国产综合久久久久影院| 国产精品精品久久久| 久久精品一二区| 99av国产精品欲麻豆| 九九久久综合网站| 青青草在线观看视频| 久久精品欧美一区| 久久精视频免费在线久久完整在线看| 中文字幕免费在线看线人动作大片| 久久草在线视频| 亚洲电影免费观看高清完整版在线| 色哟哟在线观看视频| 97精品资源在线观看| 欧美日本一区二区| 伊人色在线观看| www欧美在线观看| 欧美精品一卡两卡| 不用播放器的免费av| 亚洲伦理久久| 日韩一区二区电影网| 99热这里只有精品2| 中文字幕一区二区三区日韩精品| 精品免费视频一区二区| 亚洲天堂2024| 欧美偷窥清纯综合图区| 亚洲美女视频网站| 一级片视频免费看| 久久亚洲专区| 色综合久综合久久综合久鬼88 | 久久人人爽av| www 久久久| 欧美大胆人体bbbb| 国产精品久久久久久亚洲色 | 日韩一级黄色大片| 少妇献身老头系列| 另类在线视频| 亚洲一品av免费观看| 后入内射无码人妻一区| 中文无码久久精品| 欧美激情一区二区三级高清视频| 日本三级视频在线| 日韩激情在线观看| 成人网欧美在线视频| 亚洲男女视频在线观看| 久久综合狠狠综合久久激情| 亚洲一区不卡在线| 蜜臀av在线| 日本国产一区二区| 免费人成视频在线播放| 欧洲亚洲视频| 久久精品国产亚洲| 国产情侣在线视频| 久久精品国产一区二区三区免费看 | 黄黄的网站在线观看| 亚洲成人tv网| 欧美日韩亚洲自拍| av自拍一区| 在线观看日韩欧美| 精品一区二区三区四| 久久亚洲欧美| www.成人av.com| 国产色a在线| 亚洲自拍另类综合| 99热这里只有精品在线播放| 超碰97久久国产精品牛牛| 中文字幕亚洲影视| 日韩欧美国产不卡| 日本精品在线观看视频| 欧美日韩亚洲一区| 国产女人精品视频| 五月婷婷六月丁香| 亚洲精选视频免费看| 国产精品丝袜久久久久久消防器材| 亚洲二区av| 亚洲女人天堂网| 欧美日韩中文视频| 国产一区二区美女诱惑| 日本高清不卡一区二区三| 国产丝袜在线观看视频| 欧美日韩免费一区二区三区 | 91丨九色丨蝌蚪丨老版| 黄色影视在线观看| 国产成人午夜性a一级毛片| 亚洲成人黄色网址| 日日骚一区二区三区| 裸体在线国模精品偷拍| 日本高清久久一区二区三区| 小草在线视频免费播放| 亚洲精品一区在线观看| 亚洲最大的黄色网址| 久久99国产精品久久| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲电影观看| 日韩成人黄色av| 国产一级片网址| 国产成人丝袜美腿| 99精品一区二区三区的区别| 巨大黑人极品videos精品| 国产亚洲人成网站在线观看| 四虎成人在线观看| 久久午夜色播影院免费高清 | jizz中文字幕| 久久视频一区| 欧洲久久久久久| 激情都市亚洲| 亚洲男人天堂2024| 国产成人一区二区三区影院在线| 成人教育av在线| 国产www免费| 欧美天堂社区| 日本高清视频精品| 九九热视频在线观看| 日韩欧美在线中文字幕| 美女100%无挡| 丝袜美腿亚洲一区| 午夜精品电影在线观看| 欧美男男gaygay1069| 日韩中文字幕在线精品| 91麻豆国产在线| 亚洲色图一区二区| 青娱乐国产精品视频| 欧美日韩国产成人精品| 国产精品果冻传媒潘| 国产精品13p| 亚洲欧美另类自拍| 中文字幕一区二区三区免费看 | 成熟的女同志hd| 国产成人av一区二区| 久久精品无码中文字幕| 欧美综合自拍| 国产精品久久久久福利| 麻豆传媒在线完整视频| 日韩欧美一区二区在线视频| 久久久久久久久99| 久久久亚洲精品一区二区三区 | 日本特黄久久久高潮| 亚洲欧美日韩国产yyy| 国产一区二区三区黄网站| 久久久久免费视频| 青青草在线免费视频| 精品视频1区2区3区| 免费在线观看国产精品| 91热门视频在线观看| 国产又黄又猛又粗| 欧美日本一区| 免费亚洲精品视频| 亚洲人体在线| 97国产精品免费视频| 国产在线自天天| 欧美一级免费大片| 欧产日产国产69| 一区二区三区欧美日韩| 日本黄色网址大全| 国产精品66部| 成人一区二区免费视频| 久久在线免费| 久久久人人爽| 精品网站999| 日韩美女在线观看一区| 欧美日韩中文字幕在线观看| 国产成人精品免费视| 91精品久久久久久久久久久久久| 高清视频在线观看三级| 日韩在线视频播放| 水莓100国产免费av在线播放| 欧美日韩成人综合在线一区二区 | 欧美午夜激情视频| 91精品国产闺蜜国产在线闺蜜| 91女厕偷拍女厕偷拍高清| 伊人五月天婷婷| 日韩高清一级片| 国产原创popny丨九色| 综合国产精品| 日本在线高清视频一区| 动漫3d精品一区二区三区乱码| 国产精品久久久久99| 天堂√8在线中文| 色综合老司机第九色激情| 免费人成在线观看播放视频| 国产婷婷97碰碰久久人人蜜臀 | av高清不卡| 色综合视频网站| 国产黄色在线观看| 日韩在线免费视频| 韩国免费在线视频| 精品亚洲夜色av98在线观看| 丰满熟女一区二区三区| 69堂国产成人免费视频| 中文字幕第315页| 色一情一乱一乱一91av| 日韩精品乱码久久久久久| 一区二区三区毛片| 老湿机69福利| 最新国产の精品合集bt伙计| 欧美一区二区三区粗大| 国产午夜精品一区二区三区嫩草| 玖玖爱在线精品视频| 北条麻妃一区二区三区| 黄色av电影网站| 国产69精品久久99不卡| 精品人妻无码中文字幕18禁| 国产精品资源网站| 黄色片子免费看| 国产精品亚洲一区二区三区妖精 | 天堂资源在线亚洲资源| 一区二区美女| 欧美日韩三区四区| 视频一区中文| 日本在线视频不卡| 欧美日韩精品一区二区视频| 少妇免费毛片久久久久久久久| 国产欧美一区二区三区精品观看| 免费观看成人高| 精品国产123区| 亚洲图片在线观看| 欧美电影《轻佻寡妇》| 黄色录像特级片| 欧美日韩1区| 免费看日本毛片| 丝袜美腿高跟呻吟高潮一区| 国产一级特黄a大片免费| 捆绑紧缚一区二区三区视频| 97人人模人人爽人人澡| 成人午夜在线免费| 亚洲乱码国产乱码精品精大量| 2020国产精品| 色www亚洲国产阿娇yao| 亚洲欧美日韩系列| 激情五月色婷婷| 91国产免费观看| 国产又粗又长又黄| 精品国产区一区| 蜜芽tv福利在线视频| 丝袜亚洲另类欧美重口| 人人澡人人添人人爽一区二区| 992tv成人免费影院| 日本肉肉一区 | 国产精品115| 久热国产精品视频一区二区三区| 国内精品久久久久久久影视简单| 在线观看欧美激情| 亚洲国产午夜| 免费看污黄网站| 国产成人av电影在线播放| 无码人妻aⅴ一区二区三区| 欧美国产精品中文字幕| 久久黄色免费视频| 在线看国产一区二区| www.好吊色| 国产亚洲欧美aaaa| a篇片在线观看网站| 国产91精品久久久| 国产精品一区免费在线| 久久综合色一本| 91精品高清| www日韩在线观看| 国产jizzjizz一区二区| 五月婷婷欧美激情| 亚洲福利视频三区| 亚洲最大成人av| 日韩av在线网站| 久草免费在线| 欧美中文在线视频| 日本一区精品视频| 日韩精品一线二线三线| 国产精品www.| 久热精品在线观看视频| 91在线高清观看| 青青草原国产视频| 欧美乱熟臀69xxxxxx| 精品视频在线观看一区二区| 国产欧美一级| 少妇丰满尤物大尺度写真| 国产女主播视频一区二区| 九九热精品视频在线| 日韩欧美中文字幕制服| 免费在线观看黄色网| 国产精品久久中文| 美女精品一区最新中文字幕一区二区三区 | 久久精品国产69国产精品亚洲| 在线免费日韩片| 精品一区二区三区视频日产| 狠狠综合久久| 九九九久久久久久久| 中文字幕亚洲欧美在线不卡| 国产又粗又猛又爽又| 日韩激情在线视频| a级大胆欧美人体大胆666| 97久久天天综合色天天综合色hd| 欧美aaaaaaaaaaaa| 在线观看国产中文字幕| 国产亚洲综合av| 久热这里只有精品6| 亚洲国产精品视频在线观看| 久久av色综合| 99porn视频在线| 女人色偷偷aa久久天堂| 肉色超薄丝袜脚交| 亚洲精品视频在线观看免费| 国产精品主播一区二区| 久久久国产一区二区| 在线免费观看亚洲| 中文字幕中文字幕在线中一区高清 | 国产麻豆精品视频| www.5588.com毛片| 91 com成人网| 国产黄大片在线观看画质优化| 91视频免费在线| 亚洲成人精品| 色综合久久久无码中文字幕波多| 一区二区三区精密机械公司| www.麻豆av| 国模叶桐国产精品一区| 美日韩黄色大片| 国产日产欧美视频| 国产午夜亚洲精品午夜鲁丝片 | 在线中文字幕视频观看| 99久久精品久久久久久ai换脸| 欧美精品偷拍| 中文字幕人妻一区二区三区| 欧美日韩国产专区| 国产爆初菊在线观看免费视频网站| 国产精品高清在线观看| 国产精品久久天天影视| 丰满人妻一区二区三区大胸 | 在线电影av不卡网址| 亚洲a成人v| 久久久久久久久久伊人| 成人av网站免费观看| 成人公开免费视频| 日韩中文字幕在线看| 在线播放一区二区精品视频| 波多野结衣家庭教师在线| 国产视频一区在线播放| 国产亲伦免费视频播放| 欧美人交a欧美精品| 日韩在线影视| 色乱码一区二区三区在线| 亚洲精品菠萝久久久久久久| 亚洲人成色777777精品音频| 国产精品狼人色视频一区| 欧美日韩天堂| 中文字幕免费高清| 欧美一区二区三区视频在线| 丝袜诱惑一区二区| 波多野结衣激情| 久久综合九色综合97婷婷女人 | 69堂成人精品视频免费| 在线视频日韩| 国产精品精品软件男同| 日韩乱码在线视频| 国产精品一区二区三区www| 国产亚洲天堂网| 亚洲免费视频成人|