Python+excel實現的簡單接口自動化 V0.1


好久沒寫博客了。、最近忙着工作以及新工作的事。、

看了下以前寫的簡單接口自動化,拿出來總結下,也算記錄下學習成果

先來貼一下最后的結果,結果是寫在原來的excel中

執行完畢后,會將結果寫入到“狀態”列;

執行通過的話,如果返回的json有message寫入“response”列,如果執行失敗,則會將返回的json也寫入其中

前期准備:

在excel中依次填上接口、請求類型、需要傳的數據、期望返回的狀態碼以及該接口的說明

代碼如下,寫的很簡陋,甚至都沒定義方法什么的,姑且稱之為V0.1   后面學有所得再深入修改

#coding:utf-8
import requests
import json
import xlrd
import os
from xlutils.copy import copy

excel = 'apidemo.xls'   #定義存放用例的excel路徑,當前路徑下
data = xlrd.open_workbook(excel)
host = 'http://xxxxxxx/api'#測試服,這個自己寫吧
headers = {'Accept-Version':'v2','content-type': 'application/json'}  #定義headers

result = []  #用來存放驗證結果
responseValue = []  #存放返回的數據
table = data.sheet_by_index(0)
nrow = table.nrows  #獲取行數
for i in range(1,nrow): #循環獲取每行中的數據
    requestMethod = table.cell(i,2).value   #方法,post、get、delete
    url = host + table.cell(i,1).value  #拼接url
    payload = table.cell(i,3).value #定義要傳的值
    ex = table.cell(i,4).value  #獲取期望的返回值,目前是用status_code來判斷
    if requestMethod == 'get':  #不同的方法發不同的請求
        r = requests.get(url,headers = headers)
    elif requestMethod == 'post':
        r = requests.post(url,data = payload,headers = headers)
    elif requestMethod == 'delete':
        r = requests.delete(url,data = payload,headers = headers)
    if r.status_code == ex:  #如果和期望值一樣,case通過
        result.append('true')
        if 'message' in r.json().keys():  #這個看情況而定吧,這邊例如賬號密碼錯誤也是在message里的
            responseValue.append(r.json()['message'])  #將message先存入response
        else:
            responseValue.append('')
    else:
        result.append('false') #如果結果不對的話,如果有message就寫,沒有就全部寫入
        if 'message' in r.json().keys():
            responseValue.append(r.json()['message'])
        else:
            responseValue.append(json.dumps(r.json(),ensure_ascii=False))  
    r.close()
    print('共有%d個url,當第%d個執行完畢'%(nrow-1,i))
book = copy(data)
sheet1 = book.get_sheet(0)  #copy原來的excel
for j in range(1,nrow):#將結果寫入到對應的表格中  #將結果和response都寫入到復制的工作表中
    sheet1.write(j,5,result[j-1])
    sheet1.write(j,6,responseValue[j-1])
os.remove(excel)
book.save(excel)    #移除原來的excel,保存新的excel

代碼中獲取返回的message,要看實際情況,我這邊是開發將錯誤都通過message返回,比如請求的數據不存在,請求注冊的手機號已經注冊過等等

代碼中存在很多不足,比如沒有捕獲異常,如果有異常出現就完蛋了。、

另外只對返回的狀態碼進行了判斷,感覺還有很多可以做的事,比如對返回的json的結構進行判斷,對數據庫進行查詢,比如delete的請求,接口返回成功,但是不一定數據庫真的已經刪除了

還有之前用appium時用到的unittest和HTMLTestRunner,感覺都可以和這個一起使用;

如果那樣的話,感覺可以定制case,針對每個接口的不同功能,做針對性的判斷

 

增加下遇到的小問題:

1.對返回的json進行判斷,json返回是中文時的問題

json.dumps(r.json(),ensure_ascii=False)

 2.最后的excel報告的樣式沒有了

data = xlrd.open_workbook(excel,formatting_info=True)

 


免責聲明!

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



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