接口测试 极简接口录制工具 这篇文章有一些反馈,看到大佬提到说一些代码生成的事情,
这个也会去做,不过考虑到实际团队需要共享数据的情况,就进行了一个录制共享数据的后台原型。有了后台页面,做代码生成也会更方便一些.
在小公司成本是关键,所以怎么简单怎么来了。
下面是服务端页面的一个例子,还是一样,做这个后台主要是成本不高,实际也就是花了一天时间,当然每个人情况不同,这个需要额外考虑.
大体效果: 基本增删改查 都实现了.
菜单都可以配置实现
基本 CRUD 也都可以完成
目前数据已经记录下来了,服务端也可以保存了,那么这个数据可以共享了. 通过下载功能可以把所有的录制场景下的请求和返回数据通过 excel 下载.
后续的修改和代码生成就是通过这个 excel 来进行了. 也可以只进行数据修改就可以,通过接口直接运行.
实现这样一个后台,其实就定义了一个实体,然后运行通过 Springboot 运行就可以,启动后相应的菜单都可以配置,
这个会在后面在详细介绍下,目前先把录制数据/下载说完了.
@Data
public class ApiMonitorRecord extends MetaModel {
@EruptField(
views = @View(title = "app"),
edit = @Edit(
title = "app应用名",
type = EditType.TAGS, search = @Search(vague = true), notNull = true,
tagsType = @TagsType(
fetchHandler = SqlTagFetchHandler.class,
fetchHandlerParams = "select distinct app from api_monitor_record"
)
))
private String app;
@EruptField(
views = @View(title = "场景名称"),
edit = @Edit(title = "场景名称",
type = EditType.TAGS, search = @Search(vague = true), notNull = true,
tagsType = @TagsType(
fetchHandler = SqlTagFetchHandler.class,
fetchHandlerParams = "select distinct scenario_name from api_monitor_record"
)
))
private String scenarioName;
@EruptField(
views = @View(title = "请求地址"),
edit = @Edit(title = "请求地址", notNull = true, search = @Search)
)
private String requestUrl;
@EruptField(
views = @View(title = "服务"),
edit = @Edit(
title = "服务",
type = EditType.TAGS, search = @Search(vague = true), notNull = true,
tagsType = @TagsType(
fetchHandler = SqlTagFetchHandler.class,
fetchHandlerParams = "select distinct service from api_monitor_record"
)
)
)
private String service;
@EruptField(
views = @View(title = "接口API"),
edit = @Edit(title = "接口API", notNull = true, search = @Search)
)
private String api;
@EruptField(
views = @View(title = "请求路径"),
edit = @Edit(title = "请求路径", notNull = true, search = @Search)
)
private String path;
@EruptField(
views = @View(title = "请求头"),
edit = @Edit(title = "请求头", type = EditType.CODE_EDITOR, codeEditType = @CodeEditorType(language = "json"))
)
private String requestHeaders;
@EruptField(
views = @View(title = "方法"),
edit = @Edit(title = "方法", notNull = true, search = @Search)
)
private String method;
@EruptField(
views = @View(title = "请求报文", type = ViewType.CODE),
edit = @Edit(title = "请求报文", type = EditType.CODE_EDITOR,
codeEditType = @CodeEditorType(language = "json"))
)
private String requestBody;
@EruptField(
views = @View(title = "response_headers"),
edit = @Edit(title = "responseHeaders", type = EditType.CODE_EDITOR,
codeEditType = @CodeEditorType(language = "json"))
)
private String responseHeaders;
@EruptField(
views = @View(title = "status_code"),
edit = @Edit(title = "status_code", notNull = true, search = @Search)
)
private int statusCode;
@EruptField(
views = @View(title = "返回报文", type = ViewType.CODE),
edit = @Edit(title = "返回报文", type = EditType.CODE_EDITOR,
codeEditType = @CodeEditorType(language = "json"))
)
private String responseBody;
}
其实按照目前的效果看,后续打算里面的内容都会在这几天里面可以完成一个原型。
目前肯定是比较粗糙的, 主要还是实现成本低,来验证思路是否符合实际情况的使用,是否真的可以提高效率.
也欢迎大家多提意见和建议,有人反馈是最开心的事情.
后台代码在: github
代码量其实真的没有太多夸张,真的很少.
main
├── java
│ └── io
│ └── fluentqa
│ └── server
│ ├── QAWorkspaceApp.java
│ └── recorder
│ ├── handles
│ │ └── SqlTagFetchHandler.java
│ └── model
│ └── ApiMonitorRecord.java
└── resources
├── application-dev.yaml
└── application.yaml
做了这么一些尝试,我想最重要的是尽可能介绍画太多额外的时间进行接口测试:
可能有还有很多很多, 好处就是能动手了,有目的了,大家就都可以动起手来,如果没用,成本也低,而且最少还能学点东西;如果不要,反正就不用了,也就是几天时间;如果效果不错,那可以再人做漂亮的后台,自己做也可以,就是花时间,但是如果核心是有用的,最少是解决了一些问题。
理念太多有时也不一定解决太多问题,凡事都要能动起手来才行,不能动手有个样子,也不知道具体是个什么东西.