使用apifox进行了接口测试,但是没有办法对两次的接口测试响应时间进行对比,因为apifox的测试报告是html格式的文件,所以可以读取html,提取出接口信息。
接口报告如下:
语言:python
1、读取html文件内容
2、使用规则提取出接口标题和耗时
3、将结果写入excel
其中第1和第3都比较简单,重点是第2个步骤。
按照规则提取信息有很多可以用的方法,学过爬虫知识的会知道,如beautifulsoup、正则、xpath等方法,都可以从html中提取信息。
我也是按照这三种方法的顺序去写的,但是发现前两种都无法解决问题。
对于平均耗时来说,它的标签是div class="col-md-8",这个class不是唯一的,用正则提取又会读取到多余的信息,最后用了xpath,发现还是xpath好用,因为可以唯一定位到元素。
采用如下定位,可以找到同时符合class值和包含字符串ms中s的元素。(也可以是ms因为有的响应时间是s所以用了秒s)
//div[@class='col-md-8' and contains(text(),'s')]/text()
import openpyxl
with open(r'D:\接口测试\优化后10-1apifox-reports-2023-04-04-10-58-02.html',encoding='utf-8') as f:
content=f.readlines()
import lxml.html
selector=lxml.html.fromstring(str(content))
title=selector.xpath('//h5[@class="card-header"]/text()')
time=selector.xpath("//div[@class='col-md-8' and contains(text(),'s')]/text()")
time=time[2:]
filename = "result1.xlsx"
wb = openpyxl.Workbook() # 创建工作簿对象
ws = wb['Sheet'] # 创建子表
ws.append(['title','time' ]) # 添加表头
for i in range(len(title)):
d = title[i], time[i]
ws.append(d)
wb.save(filename)