背景:接口自动化测试中已维护的接口信息中包含了老APP和新APP的接口,我想统计已维护的新APP接口有多少。
一、提取”系统内所有接口“(即新APP中所有接口)
1. 接口信息放在一个后缀名”.dart“为的DART类型的文件里,接口定义格式如下:
extension AssetsApi on Api {
static Future<WalletAssets> main() async {
var response =
await Api.request(Method.Get, "/v2/assets/main/", auth: ApiAuth.token);
return WalletAssets.fromJson(response.data);
}
}
2. 使用Linux的grep命令查找文件里符合条件的字符串
1)如1中代码所示,符合条件的字符串是”Api.request(“
2)我要获取到的信息是method和url,那么查询结果显示两行即可
3)先看一下查询结果,命令:grep 'Api.request(' -R * -A 1
4)命令简单解析:”-R“代表查找目录而不是文件、”*“代表目录下全部文件、”-A 1“代表显示除了符合条件的字符串所在行,再多显示一行。即一共显示2行
5)把查询结果放在excel中,命令: grep 'Api.request(' -R * -A 1 >>api.xlsx
二、提取”已维护接口“
1. 接口信息维护在yaml类型的文件中,基本格式如下:
asset_main:
description: 【测试】测试数据
method: get
url: /v2/assets/main/
2. 使用 xlrd 和 xlutils 把yaml中接口信息取出来放在excel中
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import yaml
import xlrd
from xlutils.copy import copy
if __name__ == '__main__':
with open("../metadata/api.yml", 'r', encoding="utf-8") as f:
api_info = yaml.full_load(f)
print(api_info['email_send_code'], api_info['email_send_code']['url'])
workbook = xlrd.open_workbook('test_api.xls')
workbook_xlutils = copy(workbook)
sheet1_xlutils = workbook_xlutils.get_sheet(0)
title = ['name', 'description', 'method', 'url'] # 第一行内容,接口信息title
for i in range(len(title)): # 把title放在表格第一行
sheet1_xlutils.write(0, i, title[i])
k = 0
for key, value in api_info.items():
if 'skip_test' in value and value['skip_test']:
continue
sheet1_xlutils.write(k+1, 0, key)
for j in range(len(title)-1):
sheet1_xlutils.write(k+1, j+1, value[title[j+1]])
k = k+1
workbook_xlutils.save('test_api.xls')
3. 取出后的接口信息如下图
三、使用Excel的 VLOOKUP() 函数查询匹配数量
1. 把”已维护接口“信息中url和”系统内所有接口“复制出来到一个表格中
2. 使用 VLOOKUP()函数进行匹配,如下图,在第二个标识下方表格中输入
“=VLOOKUP("*"&C2&"*",A:B,2,0)“,(若参考该公式,请自行查找公式中参数的含义)
3. 其中标识的值为1的说明匹配成功,标识的值为”#N/A“说明匹配失败。筛选出标识的值为1的数量总和,即为匹配成功的数量
4. 提取出url的公式:=MID(A2,FIND(", "&CHAR(34),A2)+3,FIND(CHAR(34)&",",A2)-3-FIND(", "&CHAR(34),A2))