利用Excel文档执行接口自动化测试
程序员文章站
2022-07-14 08:38:04
...
一、整体思路
1、读取Excel数据
2、读取测试用例直到最后一个测试用例的数据
①、读取url,data数据
②、判断接口方法(get,post)
③、根据②请求接口并传参
④、获取数据并判断A的值是否等于B
是:测试用例通过,在result写入Pass
否:测试用例不通过,在result写入Error
二、Excel文档使用模板说明
case_id | title | url | data | method | judge | value | result |
---|---|---|---|---|---|---|---|
测试用例ID序号 | 测试用例标题 | 接口地址 | 接口的数据 | 接口方法 | 断言 | 断言值 | 测试结果 |
三、测试过程
测试模板:
使用百度、csdn网站和一个登录接口进行测试
运行run.py文件代码reports文件夹下生成测试报告如下
生成的测试报告
四、代码结构
explain.txt为使用说明文档
五、需要使用到的模块说明
import time
获取当前时间以当前时间做为文件名命名
import xlrd
读取Excel文档
import requests
请求接口
import json
将Excel获取的数据转化格式
from xlutils.copy import copy
将xlrd模块读取文档转化为xlwt
import os
主要用于获取文件目录
六、全部代码
import time
import xlrd
import requests
import json
from xlutils.copy import copy
import os
class excel_operation():
def excel_read(self):
data_table = xlrd.open_workbook("request_case.xls")
table_number = 0 #该数值为Excel文档第几个表
table = data_table.sheets()[table_number]
nrows = table.nrows # 获取行数
ncols = table.ncols # 获取列数
data_value = table.row_values(0)#获取第一行的标题
case_id = data_value.index('case_id')
title = data_value.index('title')
url = data_value.index('url')
data = data_value.index('data')
method = data_value.index('method')
judge = data_value.index('judge')
value = data_value.index('value')
result = data_value.index('result')
for i in range(1,nrows):#从第一个用例开始执行到最后一个用例
case = table.row_values(i)#第一个开始到最后一个用例的数据
if case[method] == 'post':
if case[data] != 'None':
case_data = json.loads(case[data])#将文件data数据改为list类型
try:
request = requests.post(url=case[url], data=case_data)
if request.json()[case[judge]] == bool(case[value]):
print("第", i, "条测试用例通过")
excel_operation.excel_write(x=i, y=result)
else:
print("第", i, "条测试用例失败")
excel_operation.excel_write(x=i, y=result, result_txt='Error')
except:
print("第", i, "条测试用例请求失败!!!")
elif case[data] == 'None':
excel_operation.excel_write(x=i, y=result, result_txt='Skip')
else:
print("警告:运行接口测试用例停止,请检查原因!!!")
elif case[method] == 'get':
try:
r = requests.get(url=case[url], data=case[data])
if r.status_code == case[judge]:
print("第", i, "条测试用例通过")
excel_operation.excel_write(x=i, y=result)
else:
print("第", i, "条测试用例失败")
excel_operation.excel_write(x=i, y=result, result_txt='Error')
except:
print("第",i,"条测试用例请求失败!!!")
else:
print("警告:运行接口测试用例停止,请检查原因!!!")
def excel_write(x=0, y=0,result_txt='Pass'):
"""
:param x:文件行数
:param y:文件列数
:result_txt:写入单元格的文本
:return:
"""
now = time.strftime("%Y-%m-%d")#获取当前日期
test_case_ = os.path.dirname(os.path.realpath('run.py'))#找到runall.py所在路径
test_report = os.path.join(test_case_, "reports") # 测试报告所在路径
path_name = test_report+ "\\" + now + '-request_case.xls'#测试报告保存的路径
pata_Once = test_case_ + '\\request_case.xls'
read_excel = xlrd.open_workbook("request_case.xls")
workbook = copy(read_excel)
sheet = workbook.get_sheet(0)#获取第几个表的数据
sheet.write(x, y, result_txt)#在X行Y列写入文本
try:
workbook.save(pata_Once)
workbook.save(path_name)
except:
print("警告:出现错误!!!请排查原因!!!")
if __name__ == '__main__':
excel_operation().excel_read()
七、说明
代码及模板全部打包上传至网盘–点击链接
提取码: cqck
转载请注明出处