接口測試數據存放
excel、json、yaml、數據庫
實例:注冊功能
參數 | 變量名 | 類型 | 說明 | 是否必填 |
手機號 | mobile_phone | int | 新用戶的手機號 | 是 |
密碼 | pwd | string | 8-16位 | 是 |
類型 | type | int | 0:管理員,1:普通用戶(默認為1) | 否 |
注冊名 | reg_name | string | 昵稱:長度最大為10位(不填寫有默認值) | 否 |
讀取出來應該是一個大的列表,列表里面放的每一條測試用例,測試用例是一個字典(使用openpyxl)
步驟:
1、對操作進行封裝(請求頭、發送請求的操作)
MyRequests.py
""" 對操作進行封裝 """ import requests class MyRequests: """ 將共性提取出來 headers="http://api.lemonban.com/futureloan" """ def __init__(self): #請求頭 self.headers={ "X-Lemonban-Media-Type":"lemonban.v2" } """ 定義一個私有方法,處理請求頭(有的請求頭有token) """ def __deal_header(self,token=None): if token: self.headers["Authorization"]="Bearer {}".format(token)#添加字典元素 """ 發請求方法封裝 method=post或者get """ def send_requests(self,method,url,json=None,params=None,token=None): self.__deal_header(token)#處理請求頭 #調用requests方法 resp=requests.request(method,url,json=json,params=params,headers=self.headers) return resp
2、對讀取數據的操作進行封裝(將excel的測試用例以字典的形式一條一條讀取出來)
My_Excel.py """ 封裝讀取表單測試用例的方法 """ from openpyxl import load_workbook class MyExcel: def __init__(self,excel_path,sheet_name): """ 打開工作簿,選擇一個表單 """ wb=load_workbook(excel_path)#加載一個excel,得到工作簿對象 self.sh=wb[sheet_name] def read_data(self): """ 讀取excel表單數據 """ data=list(self.sh.values)#將生成器轉換為列表 header=data[0] case_data=[] for row in data[1:]: row_dict=dict(zip(header,row))#將頭部和用例打包 case_data.append(row_dict) return case_data #返回的是一個列表,列表中每一條數據都是一個用例
3、執行用例
""" 測試步驟 1、讀取注冊接口的測試數據-讀取出來是個列表,列表中每個成員都是一個測試用例 2、遍歷測試數據,每組數據發起一個http請求 """ import pytest import json from common.MyRequests import MyRequests from common.My_Excel import MyExcel #1、讀取注冊接口的測試數據-讀取出來是個列表,列表中每個成員都是一個測試用例 excel_path=r'D:\study\study_API\day5\testdata\測試用例.xlsx'#測試用例的存放路徑 myexcel=MyExcel(excel_path,'注冊接口') cases=myexcel.read_data() #2、遍歷測試數據,每組數據發起一個http請求 myrequests=MyRequests() class TestRegister: @pytest.mark.parametrize("case",cases) def test_register(self,case): #需要把請求參數cases轉換為字符串 req_dict=json.loads(case['req_data']) resp=myrequests.send_requests(case["method"],case["url"],json=req_dict) print(resp.json())