简单实现python接口自动化(一)
2024-09-18 06:07:51
目的:excel中维护接口用例数据,通过python中requests库进行读取用例,并把运行结果与excel中的预期结果对比,最后把执行情况写入到excel中去。
excel维护数据:
具体的接口名跟参数名根据你实际的测试的接口决定。我这边自己维护的excel列分别是编号,用例名称、请求方式、请求地址、请求参数、请求头、预期结果、实际结果、是否通过。
代码展示:
import xlrd
import xlwt
import requests
import json
from xlutils.copy import copy
def xls_open(filename):
workBook = xlrd.open_workbook(filename, formatting_info=True) # 1、打开文件
return workBook
def xls_getRow(sheet, row):
data = {}
data["method"] = sheet.cell_value(row, 2)
data["url"] = sheet.cell_value(row, 3)
data["param"] = sheet.cell_value(row, 4)
data["header"] = sheet.cell_value(row, 5)
data["expect"] = sheet.cell_value(row, 6)
return data
def xls_request(data):
if data['method'] == 'get':
result = requests.get(data['url'], data['param'])
elif data['method'] == 'post':
# headers = {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"}
# headers = {"Content-Type": "application/json; charset=utf8"}
response = requests.post(data['url'], data=json.loads(data["param"]), headers=json.loads(data["header"]))
result = response.text
else:
print("Unknown method " + data["method"])
return result
def xls_set(sheet, row, col, value, red=False):
style = "font:colour_index red;"
if not red:
sheet.write(row, col, value)
else:
sheet.write(row, col, value, xlwt.easyxf(style))
def xls_save(book, filepath):
book.save(filepath)
def doSheet(brd, bwt, sheetIndex):
brd_sheet = brd.sheets()[sheetIndex] # 获取excel单页
bwt_sheet = bwt.get_sheet(sheetIndex)
count_row = brd_sheet.nrows # 获取行数
for i in range(1, count_row):
data = xls_getRow(brd_sheet, i)
result = xls_request(data)
if data["expect"] == result:
xls_set(bwt_sheet, i, 8, 'pass', False)
xls_set(bwt_sheet, i, 7, result)
else:
xls_set(bwt_sheet, i, 8, 'fail', True)
xls_set(bwt_sheet, i, 7, result)
if __name__ == '__main__':
brd = xls_open(r'test_interface.xls') # 打开文件
bwt = copy(brd) # copy一份一样的excel文件
doSheet(brd, bwt, 0) # 执行文件
xls_save(bwt, 'test_result.xls') # 保存文件
转载:https://www.jianshu.com/p/0c2d66c4a892
总结:首先感谢这个作者的分享,我实际在操作过程中发现,excel中若维护的header类型不同,则这代码整体是有问题的,这个代码只适合接口的请求头是一致的,大家需要注意的是从excel读取出的是参数,预期结果都是字符串类型,根据实际需要来进行转化字典。
最新文章
- 史上最全、JavaScript基础篇
- 《程序设计教学法--以Java程序设计为例》
- P1533 可怜的狗狗
- windows远程桌面3389超时锁定时间调整方法(取消锁屏时间限制)
- UIView上添加了一个按钮和一个单击手势的事件相应,互相不影响的处理方法。。
- Python+django开发环境搭建
- Android WebView的缓存方式分析
- 解决 Intellij IDEA Cannot Resolve Symbol ‘XXX’ 问题
- 通过企业微信API接口发送消息
- mumu模拟器安装xposed--如何在android模拟器上进行root
- C#事件の事件聚合器(二)
- Storm 入门教程
- _lottery
- IntelliJ IDEA Default Keymap
- vsftpd的配置文件说明
- windows的cmd命令切换磁盘路径
- redis----内部数据结构学习
- Recursive sum in parent-child hierarchy T-SQL
- 类图(Rose) - Windows XP经典软件系列
- 基于springmvc静态文件资源配置问题
热门文章
- 图片杂乱无章、分享麻烦?HMS Core图片分类服务教你快速筛选、分类、整合相册
- Redis HyperLogLog 是什么?这些场景使用它,让我枪出如龙,一笑破苍穹
- 2021.07.02 P1383 高级打字机题解(可持久化平衡树)
- IDEA SpringBoot-Mybatis-plus 实现增删改查(CRUD)
- golang md5加密和python md5加密比较
- Flatbuffers学习
- [论文] FRCRN:利用频率递归提升特征表征的单通道语音增强
- ucore lab7 同步互斥机制 学习笔记
- 1.9 初学者应选择哪个Linux发行版?
- 接口测试使用Python装饰器