Python 3 讀取和存儲Excel數據(應用到接口測試)


1、利用cmd命令安裝第三方庫

  openpyxl  同時支持讀寫操作,支持的Excel是以.xlsx結尾的文件。

   命令: pip install openpyxl

   【命令:pip install requests (安裝http請求requests也是一樣的)】

2、新建Excel文件

  新建Excel的時候,需要在電腦上新建一個后綴為xlsx的文件,再通過復制粘貼的方式放到PyCharm工具里邊。

                             ------復制粘貼---------->

3、操作工作簿

  引入工具包:from openpyxl import load_workbook

  打開工作簿:open_wb=load_workbook('demo_excel.xlsx')        #傳一個工作簿名稱參數

  定位表單:sheet=open_wb['Sheet1']                #傳一個表單名,也可使用get方式獲取表單

  定位坐標:value=sheet.cell(1,3).value             #獲取到第一行第三列的值

  更新數據:sheet.cell(5,3).value='abc'               #將第五行第三列的值改為abc

  保存工作簿(一般放最后):

  open_wb.save('demo_excel.xlsx') 

  #調用save方法保存,但值得注意的是, 當數據更新時,需要關閉Excel表方可保存成功。

 

 4、接口測試:

學習以上知識之后,我們怎么通過Python操作Excel做接口測試?get / post

(可以結合jmeter做接口測試對應記憶)

  import requests

  url='http://.........com'                     #URL地址

  req=requests.get(url)               #發起get請求

  req=requests.post(url)              #發起post請求

  login_data={“mobilephone”:“183.。。。”,”pwd”:“123”}          #傳參:http請求是以字典形式傳入的

 

下一個請求若需要鑒權,則需要從上一個請求中獲取及在下一個請求去發送cookie、session、token,則需要接下來這些操作:  

  從返回的結果中獲取cookie:(注:Python只識別:cookies,而不是cookie)

  假如此處是個簡單的下單(我們用pay表示)操作:

  pay_url="http://........." 

  pay_data={通過字典傳參}

  pay_req=requests.get(參數1,參數2,cookies=req.cookies)   

        #這種方法只識別前2個值,所以傳入cookie只能以上邊的方法傳入。

 

查看結果(兩種方法):(http請求返回的數據格式:json、xml、html)

  1、res=req.text         #三種結果都可以返回

  2、res=req.json()      #json只能返回結果是json格式的

 

 

我們也可以通過session方式傳值:(只能傳入1個參數)

s=requests.session               #用一個s來接收返回的結果,以后我們在進行請求時,都用s去傳。

pay_response=s.get(參數1,params=參數2)   

 

 

 那么,理解上述的知識后,我們用函數及參數化,就可以做這個簡單的接口測試了。

首先,創建好我們的測試用例:以下邊這個表格為例(注:寫測試用例時,返回結果及比對結果為空)。

 

然后,通過我們的pycharm寫入執行用例的代碼,就可以妥妥的做接口測試啦。

 

#Python讀取Excel數據的函數方法:

 

from openpyxl import load_workbook

def demo_excel(file_name,sheet_name,start,end):

  open_wb=load_workbook(file_name)

  sheet=open_wb[sheet_name]

  data_list=[]

  for i in range(start,end):

    data_dict={}

    data_dict['ID']=sheet.cell(i,1).value

    data_dict['TITLE']=sheet.cell(i,2).value

    data_dict['METHOD']=sheet.cell(i,3).value

    data_dict['URL']=sheet.cell(i,4).value

    data_dict['DATA']=sheet.cell(i,5).value

    data_dict['CODE']=sheet.cell(i,6).value

    data_list.append(data_dict)

  return data_list

t=demo_excel('demo_excel.xlsx','Sheet1',2,6)

 

 #發起http請求的函數方法:

 

import requests

cookie=None

def http_request(req_url,req_data,method):

  global cookie

  if method=='get':

    response=requests.get(req_url,req_data,cookies=cookie)

  else:

    response=requests.post(req_url,req_data,cookies=cookie)

  if response.cookies!={}:

    cookie=response.cookies

  result=response.text()

  return result

 

 #執行測試用例:

 

open_wb=load_workbook('demo_excel.xlsx')

sheet=open_wb['Sheet1']

for item in t:

  print('正在執行第{0}條用例:{1}'.format(item['ID'],item['TITLE']))

  url=item['URL']

  data=item['DATA']

  method=item['METHOD']

  result=http_request(url,eval(data),method)

  print(result)

 

#返回結果:

  sheet.cell(item['ID']+1,7).value=str(result)

#結果比對:

  if result['code']==str(item['CODE']):

    RESULT='PASS'

  else:

    RESULT='FAIL'

  sheet.cell(item['ID']+1,8).value=RESULT

open_wb.save('demo_excel.xlsx')

    

 

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM