静态包导入:

import static io.restassured.RestAssured.*;

import static io.restassured.matcher.ResponseAwareMatcher.*;

import static org.hamcrest.Matchers.*;

RestAssured.baseURI = "xxx"   服务器地址;

RequestSpecification httpRequest = RestAssured.given();  获取httpRequest对象

int   statuscode = response.getStatusCode();  获取响应码

String xx = response.asString()  转化为字符串

Get请求:#使用then()方法后 返回Response 类型为  ValidatableResponse

Response response = httpRequest.get("/books");  获取响应报文;

ResponseBody rbody = response.getBody();  获取响应体

或者:

ResponseBody response = get().body();

参数:

ResponseBody response = given().params(// map).when.get().body();  通过map 参数较多使用  // param 系方法  中的参数不可以在get(url)中使用

ResponseBody response = given().pathParameters(// map).when.get().body();  //pathParam系方法  中的参数可以在url中使用# url = “ xxx/{param1}/{param2} ”

POST请求:

ResponseBody response = given().qureyparams(// map).when.post().body();

响应体检验:

1.转成jsonPath:

JsonPath jsonPath = response.jsonPath();

jsonPath.get("xxKey")  获取对于的value值

jsonPath.get("key1.key2.key3")  获取节点下面的节点

jsonPath.getList("key1.key2.key3")  获取列表

Response response = given()

.config((RestAssured.config().sslConfig(new SSLConfig().relaxedHTTPSValidation())))

.params("q", "自动化测试", "start", 0, "count", 5)

.get("https://api.douban.com/v2/book/search");

// 打印出 response 的body

response.print();

int statusCode = response.getStatusCode();

System.out.println("statusCode:" + statusCode);

// 获取Response 的所有 headers 并输出

Headers headers = response.getHeaders();

System.out.println(headers.toString());

// 获取Response中header名为Content-Type的值

String contentType = response.getHeader("Content-Type");

System.out.println("contentType:" + contentType);

// 等同上面方法

System.out.println(headers.get("Content-Type"));

// 校验某个Header 是否存在

System.out.println(headers.hasHeaderWithName("fasdfaf"));

System.out.println(headers.hasHeaderWithName("Server"));

// 如果Response 的headers不为空则返回true

System.out.println(headers.exist());

Map cookiesMap = response.cookies();

for (String key : cookiesMap.keySet()) {

System.out.println(key + ":" + cookiesMap.get(key));

}

System.out.println(response.cookie("bid"));

// 把Response 的body转成string类型

System.out.println(response.getBody().asString());

int count = response.jsonPath().getInt("count");

System.out.println("count:" + count);

// 获取所有的 subtitle

ArrayList subtitles = response.jsonPath().get("books.subtitle");

for (int i = 0; i < subtitles.size(); i++) {

System.out.println(subtitles.get(i));

}

// 获取特定某个的subtitle

String subtitle = response.jsonPath().get("books.subtitle[0]");

System.out.println(subtitle);

// 获取倒数第二个的subtitle

String subtitle1 = response.jsonPath().get("books.subtitle[-2]");

System.out.println(subtitle1);

// 获取特定tags底下的所有title

ArrayList tagTitle = response.jsonPath().get("books.tags[2].title");

for (int i = 0; i < tagTitle.size(); i++) {

System.out.println(tagTitle.get(i));

}

// 获取所有的 title

ArrayList> tagTitles = response.jsonPath().get("books.tags.title");

for (int i = 0; i < tagTitles.size(); i++) {

for (int j = 0; j < tagTitles.get(i).size(); j++) {

System.out.println(tagTitles.get(i).get(j));

}

System.out.println("---------------------");

}

// 获取Response json里面所有title = "Selenium 2自动化测试实战"的title

String title = response.jsonPath().get("books.title.findAll{title ->title==\"Selenium 2自动化测试实战\"}").toString();

System.out.println(title);

// 获取Response json中 1< numRaters <=20的所有 numRaters

String numRaters = response.jsonPath().get("books.rating.numRaters.findAll{numRaters -> numRaters>1 && numRaters<=20}").toString();

System.out.println(numRaters);

// 获取Response json种title = "基于Selenium 2的自动化测试"对应的 author

String title2 = response.jsonPath().get("books.findAll{it.title==\"基于Selenium 2的自动化测试\"}.author").toString();

System.out.println(title2);

Response response = given()

.config((RestAssured.config().sslConfig(new SSLConfig().relaxedHTTPSValidation())))

.params("q", "自动化测试", "start", 0, "count", 5)

.expect()

// 判断 title是否包含了 自动化 和 自动化测试

.body("books.tags[2].title", hasItems("自动化", "自动化测试"))

// 判断 count 值是否为 5

.body("count", is(5))

// 判断 publisher 值是否为 "电子工业出版社"

.body("books.publisher[0]", is("电子工业出版社"))

// 判断 title 是否等于 5

.body("count", equalTo(5))

.when()

.get("https://api.douban.com/v2/book/search");

// 打印出 response 的body

response.print();

java-assured_java - rest-assured 接口测试相关推荐

  1. Java使用jmeter源码进行接口测试_jmeter用java代码怎样编写接口测试源码

    我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java ...

  2. java怎么调用支付接口测试_微信支付中微信红包的接口测试,Java版本

    需要有认证的公众号,且开通了微信支付,商户平台且开通了现金红包的权限即可. 商户登陆地址:https://pay.weixin.qq.com选择查看营销中心的现金红包. 现金红包的官网文档说明: ht ...

  3. 利器 | Java 接口自动化测试首选方案:REST Assured 实践 (一)

    在 REST Assured 的官方 GitHub 上有这样一句简短的描述: Java DSL for easy testing of REST services 简约的 REST 服务测试 Java ...

  4. java移动端接口测试_使用java如何进行接口测试

    关于接口测试, 我们之前介绍过很多方法了, 有postman, soapUI, Jmeter等, 他们各有优势和劣势, 今天和大家分享的是如何用java TestNG来实现接口测试. 开始测试之前需要 ...

  5. uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理

    对于自动化测试,原来谈这方面的内容比较少,但是现在我们做DevOps支撑平台的时候,在整个持续集成和交付的过程中,有一个重要的内容就是自动化测试.自动化测试的覆盖面相当大,其中既包括了CS,BS和移动 ...

  6. 自动化功能测试和接口测试工具整理

    对于自动化测试,原来谈这方面的内容比较少,但是现在我们做DevOps支撑平台的时候,在整个持续集成和交付的过程中,有一个重要的内容就是自动化测试.自动化测试的覆盖面相当大,其中既包括了CS,BS和移动 ...

  7. 软件接口功能测试,自动化功能测试和接口测试工具整理(201101)

    对于自动化测试,原来谈这方面的内容比较少,但是现在我们做DevOps支撑平台的时候,在整个持续集成和交付的过程中,有一个重要的内容就是自动化测试.自动化测试的覆盖面相当大,其中既包括了CS,BS和移动 ...

  8. JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)

    目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...

  9. php带参数单元测试_一文搞定单元测试核心概念

    基础概念 单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证,这里的最小可测试单元通常是指函数或者类.单元测试是即所谓的白盒测试,一般由开发人员负责测试,因为开发人员知道被 ...

  10. airtest自动化测试_自动化测试必备实用工具,帮你提高工作效率|Gitee项目推荐...

    今天,小编从Web UI 测试.API 测试.数据库测试.接口测试.单元测试.性能测试等方面,为大家整理了 Gitee 上优秀的自动化测试开源项目,希望能给大家带来一点帮助.不足之处,欢迎讨论交流:) ...

最新文章

  1. PHP对于浮点型的数据需要用不同的方法去解决
  2. 开发日记-20190622 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  3. mysql 硬盘写入速度_MySQL存储写入速度慢分析
  4. 使用Session防止表单重复提交
  5. 对象池commons-pool
  6. 设计模式(第四式:建造者模式)
  7. C 冒泡排序及其非常非常非常简单的优化
  8. 更改应用程序图标_苹果更新 TestFlight 应用图标,增加更多拟真细节
  9. java rabbitmq 并发_RabbitMQ消息中间件 高级篇二 高并发情况下保障消息投递可靠性...
  10. allow_pickle什么意思_如何修复草图算法中“当allow_pickle=False时无法加载对象数组”...
  11. Abseil之Copies, Abbrv
  12. Android 9 (P) Zygote进程启动源码分析指南一
  13. dns 监控系统 设计 dns安全威胁的可视化。
  14. 虚拟机配置opc服务器,组态王怎么配置成opc服务器
  15. leeCode350_两个数组的交集
  16. C#计算两个日期之间相差的天数
  17. 安卓Android系统超级终端(终端模拟…
  18. Ubuntu18修改host文件加速访问Github
  19. STM32系统时钟设置(标准库)
  20. 背包问题进阶优雅总结【二维费用+分组+有依赖】

热门文章

  1. CM311-1a YST(2G+16G)刷Armbian后的网络设置
  2. android root工具twrp,Android手机-全程解析最新Root通用方法
  3. 三分钟告诉你什么是三层交换机!
  4. Cannot determine path to ‘tools.jar‘ library for 1.8 (C:/Program Files/Java/jdk-18)
  5. 开始做公众号的一些方法技巧总结
  6. php读取json三级,php-流明从文件中读取JSON
  7. java生成统计图_java生成各种统计图
  8. (转载)费玉清生活清贫 是低调大富翁
  9. win10系统64位( 惠普)台式电脑自动开机、关机图文详细解(一)
  10. Java char类型介绍