当前位置: 首页 > news >正文

测试用例接口开发实战

测试用例接口开发实战

前言

在上一集,我们也大概完成了对Jmeter的二次开发的Demo版本的了解,我们接下来就要基于这个Demo来将Jmeter压测进行平台化。

那么这一集,我们讲一讲测试用例接口开发实战。

StressCaseController

我们的Controller其实也就那些增删改查的操作加上一个执行测试用例的API。

但是我们一开始先不讲执行测试用例的API,先放一放,先把增删改查的API完成。

find

@RequestMapping("/find")public JsonData findById(@RequestParam("projectId")Long projectId,@RequestParam("id")Long caseId){return JsonData.buildSuccess(stressCaseService.findById(projectId,caseId));}

del

@PostMapping("/del")public JsonData del(@RequestBody StressCaseDelReq req){return JsonData.buildSuccess(stressCaseService.delete(req.getId(),req.getProjectId()));}
save
@PostMapping("/save")public JsonData save(@RequestBody StressCaseSaveReq req){return JsonData.buildSuccess(stressCaseService.save(req));}
update
@PostMapping("/update")public JsonData update(@RequestBody StressCaseUpdateReq req){return JsonData.buildSuccess(stressCaseService.update(req));}
完整代码

@RestController
@RequestMapping("/api/v1/stress_case")
public class StressCaseController {@Resourceprivate StressCaseService stressCaseService;@RequestMapping("/find")public JsonData findById(@RequestParam("projectId")Long projectId,@RequestParam("id")Long caseId){return JsonData.buildSuccess(stressCaseService.findById(projectId,caseId));}@PostMapping("/del")public JsonData del(@RequestBody StressCaseDelReq req){return JsonData.buildSuccess(stressCaseService.delete(req.getId(),req.getProjectId()));}@PostMapping("/save")public JsonData save(@RequestBody StressCaseSaveReq req){return JsonData.buildSuccess(stressCaseService.save(req));}@PostMapping("/update")public JsonData update(@RequestBody StressCaseUpdateReq req){return JsonData.buildSuccess(stressCaseService.update(req));}@GetMapping("/execute")public JsonData execute(@RequestParam("projectId")Long projectId,@RequestParam("id")Long caseId){return JsonData.buildSuccess(stressCaseService.execute(projectId,caseId));}
}

不用多说,自定义请求体类如下

StressCaseSaveReq
@Data
public class StressCaseSaveReq {private Long projectId;private Long moduleId;private Long environmentId;private String name;private String description;private String assertion;private String relation;private String stressSourceType;private String threadGroupConfig;private String jmxUrl;private String path;private String method;private String query;private String header;private String body;private String bodyType;}
StressCaseDelReq
@Data
public class StressCaseDelReq {private Long id;private Long projectId;}
StressCaseUpdateReq
@Data
public class StressCaseUpdateReq {private Long id;private Long projectId;private Long moduleId;private Long environmentId;private String name;private String description;private String assertion;private String relation;private String stressSourceType;private String threadGroupConfig;private String jmxUrl;private String path;private String method;private String query;private String header;private String body;private String bodyType;}

可以看到,这就是测试用例的自定义请求体类了。

接下来就要完成Service和它的Impl即可。

StressCaseService

public interface StressCaseService {StressCaseDTO findById(Long projectId, Long caseId);int delete(Long id, Long projectId);int save(StressCaseSaveReq req);int update(StressCaseUpdateReq req);}

StressCaseServiceImpl

findById
public StressCaseDTO findById(Long projectId, Long caseId) {LambdaQueryWrapper<StressCaseDO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(StressCaseDO::getProjectId, projectId);queryWrapper.eq(StressCaseDO::getId, caseId);StressCaseDO stressCaseDO = stressCaseMapper.selectOne(queryWrapper);return SpringBeanUtil.copyProperties(stressCaseDO, StressCaseDTO.class);}
delete
public int delete(Long id, Long projectId) {LambdaQueryWrapper<StressCaseDO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(StressCaseDO::getProjectId, projectId);queryWrapper.eq(StressCaseDO::getId, id);return stressCaseMapper.delete(queryWrapper);}
save
public int save(StressCaseSaveReq req) {StressCaseDO stressCaseDO = SpringBeanUtil.copyProperties(req, StressCaseDO.class);return stressCaseMapper.insert(stressCaseDO);}
update
 public int update(StressCaseUpdateReq req) {StressCaseDO stressCaseDO = SpringBeanUtil.copyProperties(req, StressCaseDO.class);LambdaQueryWrapper<StressCaseDO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(StressCaseDO::getProjectId, req.getProjectId());queryWrapper.eq(StressCaseDO::getId, req.getId());return stressCaseMapper.update(stressCaseDO, queryWrapper);}
完整代码
@Service
public class StressCaseServiceImpl implements StressCaseService {@Resourceprivate StressCaseMapper stressCaseMapper;@Overridepublic StressCaseDTO findById(Long projectId, Long caseId) {LambdaQueryWrapper<StressCaseDO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(StressCaseDO::getProjectId, projectId);queryWrapper.eq(StressCaseDO::getId, caseId);StressCaseDO stressCaseDO = stressCaseMapper.selectOne(queryWrapper);return SpringBeanUtil.copyProperties(stressCaseDO, StressCaseDTO.class);}@Overridepublic int delete(Long id, Long projectId) {LambdaQueryWrapper<StressCaseDO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(StressCaseDO::getProjectId, projectId);queryWrapper.eq(StressCaseDO::getId, id);return stressCaseMapper.delete(queryWrapper);}@Overridepublic int save(StressCaseSaveReq req) {StressCaseDO stressCaseDO = SpringBeanUtil.copyProperties(req, StressCaseDO.class);return stressCaseMapper.insert(stressCaseDO);}@Overridepublic int update(StressCaseUpdateReq req) {StressCaseDO stressCaseDO = SpringBeanUtil.copyProperties(req, StressCaseDO.class);LambdaQueryWrapper<StressCaseDO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(StressCaseDO::getProjectId, req.getProjectId());queryWrapper.eq(StressCaseDO::getId, req.getId());return stressCaseMapper.update(stressCaseDO, queryWrapper);}
}
StressCaseDTO
@Data
public class StressCaseDTO implements Serializable {private Long id;private Long projectId;private Long moduleId;private Long environmentId;private String name;private String description;private String assertion;private String relation;private String stressSourceType;private String threadGroupConfig;private String jmxUrl;private String path;private String method;private String query;private String header;private String body;private String bodyType;private Date gmtCreate;private Date gmtModified;
}

http://www.lryc.cn/news/406713.html

相关文章:

  • C#中压缩文件夹,及其内容
  • 机器学习 | 回归算法原理——多项式回归
  • 力扣224【基本计算器】
  • 【Linux】HTTP 协议
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • 网络学习|如何理解服务的端口号
  • 《0基础》学习Python——第十八讲__爬虫/<1>
  • NFTScan 浏览器现已支持 .mint 域名搜索功能!
  • Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支
  • 前端网页打开PC端本地的应用程序实现方案
  • 遇到not allow unquoted fieldName怎么办
  • IDEA安装并使用通义灵码
  • <数据集>AffectNet表情识别数据集<目标检测>
  • ThinkPHP对接易联云打印
  • JavaScript轮播图
  • 修复SteamUI.dll加载失败的指南,快速修复failed to load steamui.dll
  • PCL Local Surface Patches 关键点提取
  • Vue与ASP.NET Core Web Api设置localhost与本地ip地址皆可访问
  • Android 线程池的面试题 线程线程池面试题
  • Flink时间和窗口
  • LLaMA模型量化方法优化:提高性能与减小模型大小
  • 前端CSS实现卡片抽奖效果
  • Java在for循环中修改集合
  • Java小白入门到实战应用教程-运算符详解
  • secureCRT同时在所有已打开窗口执行命令、mac-os下使用的SecureCRT版本 以及 SecureCRT一段时间不操作没有响应的问题
  • 增材制造与智能制造关系
  • Google Test 学习笔记(简称GTest)
  • 不可变集合
  • 景区AR导航营销系统:技术解决方案与实施效益分析
  • MATLAB的基础知识