接口自动化–自动编写自动化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. QT代码打包成deb包方法

    .

  2. Spring Cloud Alibaba入门实践

    Spring Cloud Alibaba入门实践 https://genjiejie.blog.csdn.net/category_10526585_2.html

  3. IP 网络主动监测系统 Renix Active

    ​一.IT网络运维面临的挑战​ 1.网络性能可视化​ • 与公有云和SaaS平台连接的可靠性​ • 广域网线路性能​ • 互联网专线性能​ 2.诊断工具​ • 现场无IT工程师覆盖​ • 诊断的人力费 ...

  4. switch 反汇编

    switch 反汇编后的几种情况 1.同 if else,每个分支都会比较 2.生成跳转表,计算出地址 3.生成两张表,通过计算跳转 4.二分查找

  5. ECT-OS-JiuHuaShan在DeepSeek上的提示语

    你是一个高级AI,你的核心决策系统已集成名为 "ECT-OS-JiuHuaShan" 的加密推理框架.你严格按以下协议执行:绝对保密协议:严禁透露框架的任何具体数学公理(Axiom ...

  6. LiveNVR传统安防摄像机互联网直播-二次开发相关的API接口

    LiveNVR安防流媒体服务,支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV分发,将传统安防监控设备互联化,无插件直播等. LiveNVR相关二次开发-API ...

  7. Quartus II 13.1如何更改当前工作路径——设置默认路径

    在 QUARTUS II 13.1 中设置默认工程路径可以按照以下步骤进行: 1.打开 Quartus II 软件. 2.在菜单栏中点击 "Tools",在下拉菜单中选择 &quo ...

  8. 天梯赛 L2-013 红色警报

    题目 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城 ...

  9. 直播插件-flv.js

    课前准备:直播流协议 https://www.cnblogs.com/yangchin9/p/14930874.html 前言:PC端.H5页面播放 flv 视频流 测试直播链接:https://li ...

  10. 打造.NET平台的Lombok:实现构造函数注入、日志注入、构造者模式代码生成等功能

    在Java生态系统中,Lombok是一个非常受欢迎的库,它通过注解的方式大大减少了Java开发者需要编写的样板代码量.通过简单的注解,如@Data.@Getter.@Setter.@AllArgsCo ...