前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台中接口内容的设计

接口测试平台中接口内容的设计

作者头像
软件测试君
发布2019-11-14 14:58:24
6280
发布2019-11-14 14:58:24
举报
文章被收录于专栏:测试人生
我们从表结构开始:

1、基础信息部分

这部分主要是该条case的一些基础信息,例如创建人、最后更新人(同时也是最后调试过该case的人)。因为我们的平台有一个登录系统,所以所有case在被创建和被编辑的时候,会自动保存对应操作人的信息。

2、接口信息

这部分就是基础的接口信息。例如url、path、端口号等,在此不做过多叙述。

3、请求参数

这部分主要是配置接口的请求参数,例如header、body之类的,json会直接存为string,而form会以key value的形式,转成json类型的string,在下文会做详细说明。

4、返回参数

这里是做参数依赖和断言的关键。

例如我们在B接口中,需要依赖A接口的返回值,以下文截图为例:

将截图部分视为A接口,如果B接口中需要用到A接口返回的"success"的值,则以jsonPath或正则表达式的方式,将该字段值提取出来,然后设置变量名为SUCCESS,然后在B接口中,使用该参数时,传递${SUCCESS}即可。

校验:真实值的取值方式,也支持jsonPath和正则表达式的方式两种方式,然后与预期值的对比,目前只支持equals(相等)和contains(包含)两种。emm… 目前只支持body的校验。

当我们的接口在执行时,拿到返回结果后,会逐一检查校验条件是否都满足,只要有一条不满足,则会显示调试失败。

这里是bean文件,可以做个对比。

代码语言:javascript
复制
@Data
public class TestCase {

    /** 主键id */
    private int id;

    /** 创建人 */
    private String createrName;

    /** 创建人code */
    private String createrCode;

    /** 创建时间 */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date createDate;

    /** 更新人 */
    private String updaterName;

    /** 更新人 */
    private String updaterCode;

    /** 更新时间 */
    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
    private Date updateDate;

    /** 所属系统名称 */
    private String systemName;

    /** 接口名称 */
    private String apiName;

    /** url */
    private String apiUrl;

    /** 端口号 */
    private Integer apiPort;

    /** 请求方式 */
    private String apiMethod;

    /** 请求路径 */
    private String apiPath;

    /** 备注 */
    private String description;

    /** headers
    * 第一个为PO,第二个为VO,以下内推
     */
    private String headerValue;
    private List<RequestHeaders> headerForm;

    /**
     * body类型
     * 1.json  2.url form
     */
    private int bodyType;

    /** body-json */
    private String jsonValue;

    /** body-urlform */
    private String formValue;

    /** 需要保存的变量 */
    private String variableListValue;
    private List<VariableSave> variableList;

    /** 校验方式 */
    private String expectedListValue;
    private List<Expected> expectedList;

    /** 最后一次请求状态 */
    private Boolean status;

    /** 响应结果 */
    private String result;


}

最后,对header、保存变量和校验方式的存储做一个说明。

以该条“保存变量”为例:

extractMethod对应的是变量的提取方式,extractRule是提取规则,variableName为变量名。

代码语言:javascript
复制
[{"extractMethod":1,"extractRule":"$.success","variableName":"SUCCESS"},
{"extractMethod":2,"extractRule":".*?","variableName":"ALL"}]

header、保存变量和校验方式均由以上形式,以JSONArray的方式存入数据库。

下篇文章将会讲解接口的具体执行部分(因为这两篇文章加起来,就可以做一个接口自动化框架了~~),有疑问的小伙伴可在文章下方留言,我会不断优化文章的内容!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档