1,先看一下接口测试用例
2,文件1:写get和post模板
import requests
class PostGetModels:
def isMethod(self,url,data,method,headers,aeerts,**kw):
if method == 'GET':
self.send_get(url,headers,data)
else:
result = self.send_post(url,data,headers)
return result
def send_post(self,url,data,headers,**kw):
response = requests.post(url=url,data=data,headers=headers)
result = response.text
return result
def send_get(self,url,params,headers,**kw):
response = requests.get(url=url,params=params,headers=headers)
result = response.text
return result
3,文件2:通过传参读取进行接口调用
import requests
import json
import unittest
from api实现.PostGetModels import PostGetModels
class TestApi:
def test_http(self,url,data,method,headers,asserts):
pm = PostGetModels()
response = pm.isMethod(url,data,method,headers,asserts)
if json.loads(response)['success'] == asserts:
print('case执行结果---->pass')
else:
print('case执行结果---->failed')
4,文件3:读取数据文件excel
'''
参数化
'''
import xlrd,xlwt,json
from api实现.读取参数化接口说明 import TestApi
class ReadFileData:
def __init__(self):
self.tp = TestApi()
def readFileData(self):
filename='C:\\Users\\Administrator\\Desktop\\接口测试用例.xls'
#读取文件
workbook = xlrd.open_workbook(filename)
#方法一;获取文件中所有的表
# sheets = workbook.sheet_names() #['Sheet1', 'Sheet2', 'Sheet3']
# worksheet = workbook.sheet_names()[0]
# print(worksheet) #得到表名称
#方法二:通过索引获取
#sheets = workbook.sheet_by_index(0)#得到一个内存地址
# 方法三:通过表名称获取
sheets = workbook.sheet_by_name('接口用例')#得到一个内存地址
'''
sheets的名称,行数,列数
sheets.name 表名称
sheets.nrows 行数
sheets.ncols 列数
'''
nums = sheets.nrows #得到行数
#获取整行整列的值-->得到的是个列表
#rows = sheets.row_values(0) #获取第一行的标题
#cols = sheets.col_values(1) #获取第二列的数据
# 获取单元格内容
# print(sheets.cell(1, 0)) #1行0列
# print(sheets.cell_value(2, 0))#2行0列
# print(sheets.row(1)[0])#1行0列
# # 获取单元格内容的数据类型
# print(sheets.cell(1, 0).ctype)
for i in range(1,nums):
rows = sheets.row_values(i)
#调用接口函数
print('测试用例编号:',rows[0],'测试点:',rows[1])
url=rows[3]+rows[4]
#print(url)
method=rows[2]
data=eval(rows[5]) #eval可以将普通字符串转为字典
asserts=rows[-2]
headers=''
self.tp.test_http(url,data,method,headers,asserts)
rf = ReadFileData()
print(rf.readFileData())