打造全方位接口自动化测试平台:自动生成接口测试用例功能实现

目前正在着手开发一款功能全面的接口自动化测试平台,该平台将涵盖登录、用户管理、权限控制、项目管理、用例管理、测试数据管理、测试报告生成、任务调度、缺陷跟踪以及系统配置等多个核心模块。为了快速高效的编写测试用例,实现自动化测试,需要将一些固定逻辑以自动化的方式实现,来完成自动生成接口测试用例。如:正用例、headers必填项反用例、参数必填项反用例、参数长度反用例
在这里插入图片描述

技术选型

  • 后端:采用Java作为主要开发语言。
  • 前端:使用VUE框架进行界面展示。
  • 用例生成: 根据自动获取的请求头、参数信息,来自动生成对应的正反用例。

用例生成功能介绍

首先、生成用例前,需要删除之前自动生成的用例,然后再创建新用例,为了防止参数变化,导致旧用例不可用。

@Override
public ResponseEntity<Map<String, Object>> generateCase(CaseDTO caseDTO) throws CloneNotSupportedException {
    if (null != caseDTO.getApi_id()){
        if (deleteCaseByGenerate(caseDTO.getApi_id())) {
            //生成用例
            createCase(caseDTO.getApi_id());
            return RespBean.ok("生成用例成功");
        }else {
            return RespBean.error("清除旧用例失败");
        }
    }else {
        log.error("接口id缺失");
        return RespBean.error("接口id缺失");
    }
}

用例生成代码:

private void createCase(Integer api_id) throws CloneNotSupportedException {
    ApiVO apiVo = apiMapper.findApiById(api_id);
    List<DataVO> dataVoList = dataMapper.findDataByApiId(api_id);
    List<HeaderVO> headerVoList = headerMapper.findHeaderByApiId(api_id);
    if (createAllCase(api_id,apiVo, dataVoList,headerVoList)) {
        log.info("生成全参数测试用例成功");
        ApiDTO apiDto = new ApiDTO();
        apiDto.setGenerate_type(1);
        apiDto.setId(api_id);
        apiMapper.update(apiDto);
    }else {
        log.error("生成全参数测试用例失败");
    }
    if (createHeaderCase(api_id,apiVo, dataVoList,headerVoList)) {
        log.info("生成请求头反测试用例成功");
    }else {
        log.error("生成请求头反测试用例失败");
    }

    if (createDataCase(api_id,apiVo, dataVoList,headerVoList)) {
        log.info("生成参数反测试用例成功");
    }else {
        log.error("生成参数反测试用例失败");
    }

    if (createLenCase(api_id,apiVo, dataVoList,headerVoList)) {
        log.info("生成参数长度反测试用例成功");
    }else {
        log.error("生成参数长度反测试用例失败");
    }
}

针对长度用例,我们需要根据获取的字段长度,来生成超出长度的参数。将长度+1后传个下面方法:

/**
 * 根据长度随机生成整型
 */
public Long generateRandomInteger(int length) {
    String CHARACTERS = "0123456789";
    StringBuilder sb = new StringBuilder(length);
    Random random = new Random();
    for (int i = 0; i < length; i++) {
        sb.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length())));
    }
    return Long.valueOf(sb.toString());
}

/**
 * 根据长度随机生成整型
 */
public String generateRandomString(int length) {
    String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    StringBuilder sb = new StringBuilder(length);
    Random random = new Random();
    for (int i = 0; i < length; i++) {
        sb.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length())));
    }
    return sb.toString();
}

本篇文章举例说明了3种生成规则,还可以根据自己项目实际情况,开发自己的用例生成规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值