项目背景:工作中某个项目涉及的接口比较多,对接口进行冒泡测试时,使用postman独立执行每一个接口并记录下返回结果,有些繁琐;使用jmeter,要设置基础参数,又有些小题大作
功能需求:excel中录入url和data,执行脚本后,记录结果到excel中
功能设计:
1.读取excel;
2.调接口;
3.写入excel指定位置
编程语言:python
使用到的包:requests,xlrd,openpyxl
上代码:
import requests
import xlrd
from openpyxl import load_workbook
import json
from openpyxl.styles import Alignment
class TestInterfaceTools(object):
def __init__(self): # 类的初始化函数-个人理解:全局变量
self.info_list = []
self.excel_path = ".\\excel\\info.xlsx"
# self.excel_name = "info.xlsx"
self.headers = {"key": "content-type", "value": "application/json"}
def excel_read(self): # 读取excel表格
book = xlrd.open_workbook(self.excel_path)
sheet = book.sheets()[0]
for i in range(1, sheet.nrows):
temp_list = []
for j in range(1, sheet.ncols):
temp_list.append(sheet.cell_value(i, j))
self.info_list.append(temp_list) # 按行整理excel表格数据,每行数据为一个list
return self.info_list # 在其他函数中需要调用,则需要self.XXX
def excel_write(self, result, i): # 写入excel表格,使用openpyxl包
self.excel_read()
wb = load_workbook(self.excel_path)
sheet1 = wb["Sheet1"]
sheet1.cell(i, 5, result).alignment = Alignment(wrap_text=True) # 指定写入坐标(i,5)= result且该位置自动换行
wb.save(self.excel_path)
def test_request_response(self):
self.excel_read()
for x in range(len(self.info_list)):
method = self.info_list[x][2] # 当前函数内部处理的变量,无需加self.XXX
if method == "post":
res = requests.post(url=self.info_list[x][0], data=json.loads(self.info_list[x][1]),
headers=self.headers)
self.excel_write(result=res.text, i=x + 2)
elif method == "get":
res = requests.get(url=self.info_list[x][0] + self.info_list[x][1])
self.excel_write(result=res.text, i=x + 2)
TestInterfaceTools().test_request_response()
excel模板:
测试点 | url | data | method | res |
使用方法:excel录入url,请求data,接口请求方式,excel放到指定路径中,执行脚本即可!
ps:从自己的需求出发,利用已学知识优化工作流程