Rest-assured框架详解

news/2024/11/16 2:38:32/文章来源:https://www.cnblogs.com/pingguomang/p/18408686

Rest-assured框架官网

官网url:  https://rest-assured.io/

一、接口测试介绍

- 什么是接口测试

本质上基于某种协议,发送请求给服务器,服务器返回响应数据,对响应数据进行分析,判断和我们的预期是否一致,从而验证功能是否正确。

- 为什么做接口测试

更早发现问题,降低研发成本
减少回归测试人力成本与时间,快速的质量反馈
更容易实现持续集成

-接口自动化测试流程

  • 理解业务需求
  • 分析接口测试范围
  • 接口测试用例设计
  • 接口测试框架选择,常见的如 RestAssured
  • 接口测试用例编写
  • 框架与用例维护
  • 持续集成

二. REST-assured基本使用

REST-assured 是一种专为测试 REST API 而设计的测试框架。

1. pom.xml文件中 引入依赖

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

 

2. 语法格式

given().XXXX
when().XXXX
then().XXXX

given:设置测试预设,包括请求头、请求参数、请求体、cookie等
when:所要执行的操作,即发起请求的网址(GET / POST 请求)
then:解析结果、断言

3.发送请求
httpbin 是一个测试 HTTP 请求的网址,向它传递什么参数,它就会返回什么参数。

根据 http://httpbin.org/get 或者 http://httpbin.org/post 区分是 get 还是 post 请求。

三.请求method传参方式

3.1 GET请求

方式一:直接在在URL地址后面拼接参数

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;public class Test { @Testpublic void test() {given().when().get("http://httpbin.org/get?name=jay").then().log().body(); //返回响应体中的数据//log可以向控制台输出返回的信息//log().all() 可以返回所有响应中的数据
    }
}

方式二:通过 queryParam 方法添加参数

import org.testng.annotations.Test;
import static io.restassured.RestAssured.*;public class Test {@Testpublic void test() {given().  queryParam("name", "jay").queryParam("age", "22").when().get("http://httpbin.org/get").then().log().body();}
}

3.2 POST请求

1. form表单参数

参数在url后面的样式:
public class Test { @Testpublic void test() {given(). formParam("name", "jay").formParam("password", "qwerty").when().post("http://httpbin.org/post").then().log().body();}
}

运行结果:

 

2.JSON参数类型

String jsonData = "{\"mobilephone\":\"13323234545\",\"password\":\"234545\"}";
given(). body(jsonData). contentType(ContentType.JSON). //使用body时必须指定类型
when().post("http://httpbin.org/post").
then().log().body();

3.xml参数类型

String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +"<suite>\n" +" <class>测试xml</class>\n" +"</suite>";given().  contentType(ContentType.XML).body(xmlStr).
when().post("http://www.httpbin.org/post").
then().log().body();

4. 上传文件
REST-assured 提供了一个叫做 multiPart() 的方法可以指定文件(file)、字节数组(byte-array)、输入流或者是上传文件:

given(). multiPart(new File("D:\\match.png")).
when().post("http://httpbin.org/post").
then().log().body();

 

四. 获取api响应

通过 extract().response() 将响应结果赋值到一个 Response 类型的变量中。

Response res=given().contentType(ContentType.JSON).body(jsonData).//headers(Map map),将JSON格式的多个header,通过fastjson转换成map:Map result = (Map) JSON.parse(JSON_String);
        when().post("http://httpbin.org/post").then(). extract().response();//获取接口的响应时间(ms)
System.out.println(res.time());
//获取响应头信息
System.out.println(res.getHeader("Content-Type"));
//获取响应体信息(Json格式)
System.out.println(res.jsonPath().get("lotto.lottoId"));

Gpath的使用:

Gpath用来提取响应中的某一个具体的数据。

提取JSON:res.jsonPath().get(“XXX.XXX.XXX”);
提取xml:res.xmlPath().get(“XXX.XXX.XXX”);
提取HTML:res.htmlPath().get(“XXX.XXX.XXX”);

1) 提取JSON示例:

 

2) 提取HTML示例:

获取HTML响应时,通过 标签名.标签名 的方式获取标签中的值,通过 @属性名 的方式获取属性的值:

 3) 提取xml与提取HTML使用方式几乎一致。

 

注意:

  • 1.  REST-assured 获取响应时如果返回的是 JSON 小数,那么对应的Java类型是float,但是为了解决丢失精度的问题,一般都会将其转换为BigDecimal。
  • 2.  如果想要将返回结果转换成BigDecimal,需要添加配置,如下图:

 

  • 3. 将浮点数转换成BigDecimal:

BigDecimal bigDecimal =BigDecimal.valueOf(3.14159);

全局配置:

 使用了 baseURI 全局配置之后地址会自动的拼接:

 

 

  • 4.一些基本的自动化过程:比如登录注册的测试用例写在了同一个 Excel 文件中,可以使用 @BeforeMethod 注解标记注册方法(先注册后登录),@Test 注解标记登录方法,定义两个 dataprovider 方法,分别读取 Excel 的某几行作为登录或注册的测试用例,将这些测试用例放在对应的测试方法中按顺序运行


原文链接:https://blog.csdn.net/wxsyj/article/details/127068752

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795572.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Google Play中无法更新Chrome和Android System Webiew的解决办法

【1】去https://apkpure.com/下载安装最新的Apkpure;【2】打开Apkpure,搜索Google Play,然后更新到最新版本;【3】重新打开Google Play,点自己头像,打开管理应用和设备,你会发现已经不需要更新Android System Webiew了,并且此时可以搜索任何APP进行安装,包括之前极难更…

Consul Windows部署

一、Consul下载 下载地址:Install | Consul | HashiCorp Developer 本次使用Windows版本下载解压后,可看到consul.exe文件二、Consul Server配置 为了方便使用增加server-config.hcl和server-start.bat文件(一) server-config.hcl配置文件 # 节点名称 node_name = "my-c…

国产化:部署单机THS(东方通TongHttpServer替代Nginx)

背景 国产化要求,使用东方通 TongHttpServer 替代 Nginx 。1 安装THS 解压之后把授权文件 license.dat 放到主目录下即可。 tar zxvf TongHttpServer_6.0.0.2_x86_64.tar.gz2 启动主程序 如果以 root 用户启动 THS 时,worker 进程会切换到 nobody 用户 nobody 组运行。所以确…

magma软件许可优化解决方案

Magma软件介绍 MAGMA在90年代初通过代理进入中国市场。为了更好快速的服务中国的客户、带来更便捷的、中文语言的技术支持和培训,2009年,MAGMA德国在中国正式设立分公司,即迈格码(苏州)软件科技有限公司(以下简称为MAGMA中国),从事MAGMA的销售和售后活动,服务中国大陆…

又发现2个bug

bug1 设置缓存过期未注意单位,导致一下失效了bug2 由于bug1 缓存失效导致 bug2 gorm,结构体里面有重复的字段,查询未报错,直接赋值成为了默认值 导致了程序异常 顺便编写了一个脚本,擦了一下屁股,之前的bug 修复了,数据未完全处理,导致偶尔有人反馈异常

关于RTX 4090 微调llama2模型时出现nvcc fatal : Unsupported gpu architecture compute_89的解决办法

RTX 4090是现在普通人可以轻松获取的最好的显卡了。运算速度仅次于专业图形卡Tesla A100,A800,H100 RTX4090显卡是可以单卡推理llama2 7b和13b模型的,7b模型占用缓存14G左右,13b模型单卡推理显存占用在23G多点(只是运行一段时间容易爆显存),所以普通人都是可以使用llama2大…

从注册到实战,超简单图床使用(附代码实现本地图片转换为网络url)

1.注册一个薄荷图床的的账号,并添加客服申请api测试权限 ​ 查看api文档 我们只需关注两个必选参数即可,如图中红色标注 2.编写pthon代码 ​ 其他语言也可以,只要发送post请求即可,注意url、token和照片需要更改为你自己的 import requestsdef python_demo():url = https:…

【开源分享】PHP 在线客服系统源码 全开源无加密,支持自动刷新 网页即时接收消息

智能化在线客服系统也是其中一个必备功能。其智能化主要体现在细节中,在保持客服人员工作正常进行的情况下,让效率变高。智能化在线客服系统采取“轮询”的工单分配方式,让合适的客服人员处理合适的问题;提供“视图”功能,让客服人员专注于重要工单;强大的“搜索”功能,…

网络安全事件应急响应之专家运营篇

原创 袁哥大话安全 袁哥大话安全 一、工作内容 网络安全应急响应人员针对安全监测人员、业务部门或上级部门反馈的疑似安全事件进行研判,根据研判情况进行实际的上机排查和调查,以确定安全事件的原因、影响范围和解决方案。 网络安全事件应急响应的一般步骤: 1.1 网络安全事…

软件工程作业2:论文查重

论文查重 Github链接这个作业属于哪个课程 软件工程课程这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业的目标 按照要求写一个查重软件PSP2.1 Personal…

24小时搜书Z-library最新国内访问入口镜像网址(持续更新)

24小时搜书Z-library简介24小时搜书Z-library,这是一个基于 IPFS 的电子书搜索引擎,收录了大量图书,据介绍有 1000万本以及8000篇文章,可以通过书名、作者、出版社、扩展名、ISBN 等多种信息进行搜索。各种常见的电子书格式如 pdf、mobi、epub、azw3 等都支持下载。Z-libra…