知识点:
1、引入本地.py 文件
2、读取本地Excel文件
3、将测试结果写入Excel文件
前言:在学习接口自动化测试的过程中,我发现公司的很多接口除了传入的参数不一样,很多代码都是一样的,为此我先想到的是写公用的方法,但公用方法public写好后,我发现还是有很多重复代码,比如,import引入的模块和assert断言等,于是我就想能不能用一个Excel装需要传递的参数,然后一个Excel用来接收接口执行的结果,于是就有了这篇博客
# 这个文章是写的公用方法,很多接口的测试除了参数不一样其他的都是一样的
import requests
import unittest
# 导入本地login_in.py和public.py文件
# login_in.py文件在D:/leawod/web_api/login-controller/
import sys
sys.path.append("D:/leawod/web_api/login-controller/")
import login_in
sys.path.append("D:/leawod/web_api/common/")
import public
# xlre是读取本地Excel模块,xlwt是写入Excel模块
import xlrd
import xlwt
import openpyxl
from openpyxl import load_workbook
# 打开Excel文件web-parameter.xlsx
data = xlrd.open_workbook("web-parameter.xlsx")
# 通过名称获取
table = data.sheet_by_name(u'Sheet1')
# 获取Excel行数
nrows = table.nrows
# print(nrows)
for i in range(1, nrows):
# 输出第i行的值
result = table.row_values(i)
# print(result)
# result[0]输出行的第一个列
interface = result[0]
#eval()方法,可将字典格式的字符串与字典互换
body1 = eval(result[1])
# public.public_fun:是public.py文件下的public_fun函数
# public.ip:是public.py文件下的ip变量
result = public.public_fun(body1, public.ip, interface)
if '成功' in result:
print("接口: "+interface+" 测试成功")
else:
print("接口: " + interface + " 测试失败")
# print("失败原因:" + result)
# 如果报错将报错的接口和原因写入已存在的xlsx文件
wb = load_workbook("worry.xlsx") # 生成一个已存在的wookbook对象
wb1 = wb.active # 激活sheet
# 打开Excel文件worry.xlsx
w_data = xlrd.open_workbook("worry.xlsx")
# 通过名称获取
w_table = w_data.sheet_by_name(u'Sheet1')
# 获取Excel行数
w_nrows = w_table.nrows
# print(w_nrows)
wb1.cell(w_nrows + 1, 1, interface)
wb1.cell(w_nrows + 1, 2, result)
w_nrows = w_nrows + 1
wb.save("worry.xlsx") #保存
运行结果:
接口: /college/queryPageList 测试成功
接口: /role/queryPageList 测试成功
接口: /knowCategory/queryPageList 测试成功
接口: /knowCategory/queryPageList2 测试失败
接口: /knowCategory/queryPageList3 测试失败
Excel接口文档
报错接口输出文档
注意:
1、在执行.py文件时需要把用于接收报错接口的Excel文件worry.xlsx关闭,不然要报错
2、在写else分支,将报错原因输出至worry文件时,我定义的局部变量和全局变量data、table重名了,也导致了报错,这个在后面的学习中还是要注意