首页 > 其他分享 >接口自动化–自动编写自动化case

接口自动化–自动编写自动化case

时间:2023-03-08 11:32:44浏览次数:40  
标签:case String System 接口 测试 自动化 println out


接口自动化–自动编写自动化case

  • 工作以来遇到和接触到很多的自动化测试框架。无论是什么样的自动化测试框架或者是自动化测试平台 原理是基本是一致的。都是通过驱动测试用例脚本来测试系统功能,并且记录下测试结果的一个过程。还有些平台会增加自动执行,并发,json转换形成测试用例,测试结果、测试数据持久化存储,等等的一些操作。
  • 基于对自动化的认知,测试用例都需要人工的去编写,没有什么捷径可走。使用框架的可以直接编写脚本,这种编码的方式灵活度很高。测试框架可以和开发语言一致,这样有两个优点:
  • 一、研发的代码有值得借鉴的一些方法可以直接使用,有助于了解项目代码。
  • 二、当遇到问题是,可以找研发求助,毕竟大多数的测试编码水平不如开发(少数测试大牛除外)。
  • 测试平台,编写测试用例直接在界面上就可以编写,优缺点也比较明显
  • 优点:降低了自动化测试的门槛,测试人员不需要了解代码就可以做自动化测试。
  • 缺点:不灵活,遇到参数提取,参数公用等问题 需要定制很多规则。
  • 最近,做了一个工具。根据抓包工具或者chrome浏览器导出的.har文件,形成测试用例。
    一个请求基础的参数 都获取到。根据用例的格式 可快速的形成一批测试用例。
  • 当然这也需要手动去调试,多场景问题解决不了。不过这也是一个快速自动化的解思路
    代码附上(spock测试框架)
public class CreateCaseService {

public static void main(String[] args) throws HarReaderException {
HarReader harReader = new HarReader();
//读取har文件
Har har = harReader.readFromFile(new File("/Users/java/test.har"));
//解析har文件内容
for (HarEntry entry : har.getLog().getEntries()) {
//获取url,截取获得api
String[] url = entry.getRequest().getUrl().split ("31229/");
String api = url[1];
//获取response中的内容
String text = entry.getResponse().getContent().getText();
String encoding= entry.getResponse().getContent().getEncoding();
//如果是base61编码,需要解码
if ("base64".equals(encoding)){
text= new String(Base64.getDecoder().decode(text));
}
//新建用例given部分
System.out.println("def \""+api+"\"() {");
System.out.println("\n given:");
System.out.println(" HttpClientUtil httpClientUtil = new HttpClientUtil()");
System.out.println("\n when:");

//判断是post or get 方法
if("POST" == entry.getRequest().getMethod().toString() ) {
System.out.println(" List<Param> paramList = new LinkedList<>()");
for (HarPostDataParam data : entry.getRequest().getPostData().getParams()){
System.out.println(" paramList.add(new Param(\""+data.getName()+"\", \""+data.getValue()+"\"))");

}
System.out.println("\n def result = httpClientUtil.doPost(\"" + api + "\", headerMap,paramList,null)");
}else {
System.out.println("\n def result = httpClientUtil.doGet(\"" + api + "\", headerMap, null)");
}

System.out.println("\n then:");
//校验接口内容
// System.out.println(text);
try {
for (Map.Entry<String, Object> entry1 : JSON.parseObject(text).entrySet()) {
//System.out.println("key值="+entry1.getKey());
//System.out.println("对应key值的value="+entry1.getValue());
System.out.println(" assert JSON.parseObject(result).containsKey("+entry1.getKey()+")");
}
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("}");
}
}
}


标签:case,String,System,接口,测试,自动化,println,out
From: https://blog.51cto.com/u_13579716/6107971

相关文章

  • jeecg-boot中分页接口用自定义sql和list实现
    1、controller中@ApiOperation(value="分析仪工作状态和报警-3列-分页",notes="分析仪工作状态和报警状态-分页")@ApiImplicitParams({@ApiImpli......
  • typescript 接口demo
    https://www.runoob.com/typescript/ts-interface.html......
  • Luffy项目:5、腾讯云短信封装,luffy项目登录注册后端逻辑API接口编写,前端页面及Vue编写
    目录Luffy项目一、腾讯云短信开发1、封装发送短信二、登录/注册后端逻辑API编写1、发送短信验证码接口2、短信登录接口2、1.视图类2、2.序列化类3、短信注册接口3、1.路......
  • UI自动化--下拉框处理和等待机制
    UI自动化--下拉框处理和等待机制一、下拉框处理:网页上的js弹出框一般有三种情况,且识别不了元素,需要使用switch_to.alert()进行跳转这时候需要先跳转到此弹窗,才能做到自动化......
  • 自动化测试环境的搭建
    自动化测试环境的搭建:一、安装selenium:安装方式一:    pipinstall-Uselenium安装方式二:手动安装selenium:    1、安装pytho......
  • JavaSE——接口
    概述我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,构造方法,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,JDK7之前,包括JDK7,接口中全部是抽象方法。接......
  • api接口使用MD5加密加盐签名校验
    最近一个A系统需要向B系统推送数据,因为数据每天不一定有多少,有时候多有时候少,且由UGC生成,需要B系统做一些处理,用mq比较麻烦,且公司用的付费rocketmq。除了重要数据一般不使......
  • MCP2515国产替代DP2515带有SPI 接口的独立CAN 控制器
    DP2515是一款独立控制器局域网络(ControllerAreaNetwork,CAN)协议控制器,完全支持CANV2.0B技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。DP2515自带的两个验......
  • 从青铜到王者,揭秘 Serverless 自动化函数最佳配置
    作者:丛霄背景介绍全托管的Serverless计算平台能给用户带来更少的运维代价、更强的稳定性和更快的弹性能力。Serverless的目标之一是免运维,但仍旧存在一些障碍,在Serv......
  • Deployment、ReplicaSet、ReplicationController控制器
    kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制pod的具体状态和行为。部分控制器类型如下:ReplicationController、ReplicaSet、Deployment......