接口自动化–自动编写自动化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的更多相关文章

  1. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

  2. java juint框架的windows自动化-自动运行juint程序简述

    在京东混了一个月,基本有点稳定了,觉得也有所余力了现在,继续写博客吧,不过以后更新也许不是那么频繁了 本人使用的是juint框架,对开发是一个单元测试的java框架,但是对测试而言是java的基石之一 ...

  3. 接口自动化与UI自动化两者的可行性

    1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系.   2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动 ...

  4. java+selenium自动化脚本编写

    实训项目:创盟后台管理,页面自动化脚本编写 使用工具:java+selenium 1)java+selenium环境搭建文档 2)创盟项目后台管理系统链接 java+selenium环境搭建 一.Se ...

  5. Python自动化测试用例设计--自动化测试用例与手工测试用例区别与联系

    1. 前言 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者最大的各自特点在于,前者具有较好的异 ...

  6. 如何用python自动编写《赤壁赋》word文档

    目录 前言 安装-python-docx 一.自动编写<赤壁赋> 准备数据 新建文档 添加标题 添加作者 添加朝代 添加图片 添加段落 保存word文档 二.自动提取<赤壁赋> ...

  7. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

  8. APP自动化之Hybrid自动化解决方案(七)

    基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎) 原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver ...

  9. Makefile自动编写工具实例

    准备源文件如下: /*test.c*/ #include <stdio.h>#include "phello.h"#include "pword.h" ...

  10. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置

    笔记 7.接口配置文件自动映射到属性和实体类配置     简介:使用@value注解配置文件自动映射到属性和实体类 1.添加 @Component或者Configuration 注解:        ...

随机推荐

  1. kafka 副本集设置和理解

    转载请注明出处: 最近在做集群高可用验证的时候,遇到了一个kafka 副本集高可用的问题,在这里分析总结一下. 当前的部署情况是kafka集群有三个节点:在做集群高可用验证的时候,先shutdown一 ...

  2. JavaFX 常见布局组件使用

    Laytout 简介 JavaFX 提供了多种布局管理器(Layout Managers),它们用于自动管理用户界面组件的位置和大小.布局管理器可以简化 UI 设计,因为它们会根据窗口的大小变化自动调 ...

  3. 【R 4.4.1】1 环境搭建

    一.环境搭建 安装 直接去官网下载安装,没有什么配置. 官网 R: The R Project for Statistical Computing (r-project.org) 选择离得近的节点下载 ...

  4. PYNQ-Z2启动NutShell(果壳处理器)——整理补充原官方文档

    原文档链接:https://github.com/OSCPU/NutShell 这篇文章暂时先用原文档的英文版,之后会编写一个中文版文档 Compile chisel code before star ...

  5. iOS 内购补充点

    转载请注明出处!!! 1.关于支付类型的选择 (1)消耗型物品:用一次,使用后失效,商品会在使用中一点一点消耗,这里最多使用的是游戏道具之类.游戏中内购大多使用这个,还有直播送礼物等等: (2)非消耗 ...

  6. Litctf2025 Write-up

    逼逼叨 很难受啊,出去跑项目封闭管理,结果没打上,只能赛后复现了. 上班是真滴累 Web [LitCTF 2025]多重宇宙日记 进来先随便注册个账户,说实话看到这样的题目第一眼怀疑二次注入.直接不想 ...

  7. YC大佬分享的 10 个 vibe coding技巧,看完收获巨大

    1.当 AI 卡住的时候切换战场. 问题: 当你在使用 cursor claude code 这样的 AI 编程工具,在编程的时候,如果遇到 AI 无法实现某个功能或者无法修复某一个错误,并且反复尝试 ...

  8. Java 日志管理的黄金组合: SLF4J+Logback

    slf4j 的前世今生 Log4J.Log4J2和LogBack的历史故事 使用过Log4J和LogBack的同学肯定能发现,这两个框架的设计理念极为相似,使用方法也如出一辙.其实这个两个框架的作者都 ...

  9. 一个纯净的自动微分框架—autograd

    技术背景 自动微分是一个在深度学习等计算领域非常常用的一个工具了,其核心原理就是基于链式法则的求导.但是如果只是为了使用一个自动微分的功能,不做深度学习的话,去安装一个庞大的深度学习框架,学习成本是很 ...

  10. 国产化板卡设计原理图:2018-基于双FT-M6678 DSP的3U VPX的信号处理平台

    基于双FT-M6678 DSP的3U VPX的信号处理平台 一.板卡概述 该板卡是由我公司自主研发的基于3U VPX架构的信号处理板,该处理板包含2片 FT-M6678 DSP芯片,1片 Sparta ...