从接口输出日志中提取用例
1 背景
接口用例已经在项目中的yml文件中编写,但是yml文件不能做为交付文档用,本文对工作中从接口输出日志中提取用例信息,并导入到excel文件中做了总结
2 工具
idea,notepad++,excel
3 提取用例
总体思路是代码中将要提取的数据打印到日志中,对日志信息进行处理,然后以文本导入向导的方式导入到excel中
3.1 日志输出
为了便于从日志中提取用例所需要的信息(用例名称,入参,出参),所以代码中要将这几个全部打印到日志中,并加入部分分隔符方便后续处理,如:
MerchantDisplayInfoRequest merchantDisplayInfoRequest = (MerchantDisplayInfoRequest)dataMap.get("MerchantDisplayInfoRequest");
logger.info(caseId + "-" + "请求参数:" + JSON.toJSONString(merchantDisplayInfoRequest));
Result merchantDisplayInfoResult = merchantClient.getMerchantDisplayInfo(merchantDisplayInfoRequest);
logger.info(caseId + "-" + dataMap.get("caseDesc") + "==>" + JSON.toJSONString(merchantDisplayInfoResult));
3.2 notepad++编辑日志
3.2.1 删除无用日志
用idea批量运行用例,将所有日志输出复制到notepad++中,并将日志中与用例执行代码无关的日志删除
删除无用日志后,剩下都是有规律的日志信息
3.2.2 日志信息替换
- 从日志中提取用例名称,入参,出参,日志格式无用需要替换为空:
^2019.+INFO.* - \d{3}-
- 将小括号替换为大括号
- 每行行尾插入#号,做为导入excel文件的分隔符:\}$ ==> }#
- 将请求返回日志==>替换为 #,做为导入excel文件的分隔符:
- 所有行合并为一行:\r\n 替为空(目前没有想到两行合为一行的方法,所以先合并为一行,再分割)
- 将整行按请求参数分割:#请求参数 替换为#\r\n请求参数(这样便实现之前的两行要合为一行的目的)
- 复制所有文本,粘贴到excel中,然后选择使用文本导入向导...
、
导入excel后如下,根据用例模板调整即可