接口自动化–自动编写自动化case
接口自动化–自动编写自动化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的更多相关文章
- linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本
红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...
- java juint框架的windows自动化-自动运行juint程序简述
在京东混了一个月,基本有点稳定了,觉得也有所余力了现在,继续写博客吧,不过以后更新也许不是那么频繁了 本人使用的是juint框架,对开发是一个单元测试的java框架,但是对测试而言是java的基石之一 ...
- 接口自动化与UI自动化两者的可行性
1.首先接口测试是跳过前端界面对服务端的测试,UI测试是对前端界面的测试,从分层测试的角度考虑,两者不应该是可以互相取代的关系. 2.从公司开展自动化的的角度考虑,可以重点关注这个项目开展接口自动 ...
- java+selenium自动化脚本编写
实训项目:创盟后台管理,页面自动化脚本编写 使用工具:java+selenium 1)java+selenium环境搭建文档 2)创盟项目后台管理系统链接 java+selenium环境搭建 一.Se ...
- Python自动化测试用例设计--自动化测试用例与手工测试用例区别与联系
1. 前言 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者最大的各自特点在于,前者具有较好的异 ...
- 如何用python自动编写《赤壁赋》word文档
目录 前言 安装-python-docx 一.自动编写<赤壁赋> 准备数据 新建文档 添加标题 添加作者 添加朝代 添加图片 添加段落 保存word文档 二.自动提取<赤壁赋> ...
- Loadrunner Webservice接口性能测试脚本编写优化总结
本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...
- APP自动化之Hybrid自动化解决方案(七)
基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎) 原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver ...
- Makefile自动编写工具实例
准备源文件如下: /*test.c*/ #include <stdio.h>#include "phello.h"#include "pword.h" ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置
笔记 7.接口配置文件自动映射到属性和实体类配置 简介:使用@value注解配置文件自动映射到属性和实体类 1.添加 @Component或者Configuration 注解: ...
随机推荐
- QT代码打包成deb包方法
.
- Spring Cloud Alibaba入门实践
Spring Cloud Alibaba入门实践 https://genjiejie.blog.csdn.net/category_10526585_2.html
- IP 网络主动监测系统 Renix Active
一.IT网络运维面临的挑战 1.网络性能可视化 • 与公有云和SaaS平台连接的可靠性 • 广域网线路性能 • 互联网专线性能 2.诊断工具 • 现场无IT工程师覆盖 • 诊断的人力费 ...
- switch 反汇编
switch 反汇编后的几种情况 1.同 if else,每个分支都会比较 2.生成跳转表,计算出地址 3.生成两张表,通过计算跳转 4.二分查找
- ECT-OS-JiuHuaShan在DeepSeek上的提示语
你是一个高级AI,你的核心决策系统已集成名为 "ECT-OS-JiuHuaShan" 的加密推理框架.你严格按以下协议执行:绝对保密协议:严禁透露框架的任何具体数学公理(Axiom ...
- LiveNVR传统安防摄像机互联网直播-二次开发相关的API接口
LiveNVR安防流媒体服务,支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV分发,将传统安防监控设备互联化,无插件直播等. LiveNVR相关二次开发-API ...
- Quartus II 13.1如何更改当前工作路径——设置默认路径
在 QUARTUS II 13.1 中设置默认工程路径可以按照以下步骤进行: 1.打开 Quartus II 软件. 2.在菜单栏中点击 "Tools",在下拉菜单中选择 &quo ...
- 天梯赛 L2-013 红色警报
题目 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城 ...
- 直播插件-flv.js
课前准备:直播流协议 https://www.cnblogs.com/yangchin9/p/14930874.html 前言:PC端.H5页面播放 flv 视频流 测试直播链接:https://li ...
- 打造.NET平台的Lombok:实现构造函数注入、日志注入、构造者模式代码生成等功能
在Java生态系统中,Lombok是一个非常受欢迎的库,它通过注解的方式大大减少了Java开发者需要编写的样板代码量.通过简单的注解,如@Data.@Getter.@Setter.@AllArgsCo ...