静态包导入:

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<String, String> 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<String> 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<String> tagTitle = response.jsonPath().get("books.tags[2].title"); for (int i = 0; i < tagTitle.size(); i++) { System.out.println(tagTitle.get(i)); } // 获取所有的 title ArrayList<ArrayList<String>> 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();
 

转载于:https://www.cnblogs.com/pengranxindong/p/10191880.html

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

  1. java版本-API接口测试框架搭建

    基本概念:testng ,http, json, mysql, jenkins, spring 陆陆续续搭建起来的接口测试框架,使用起来并不是特别的理想,所以走上了一条迭代优化的不归路. 所谓的框架是 ...

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

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

  3. java移动端接口测试_走进Java接口测试之测试框架TestNG数据驱动(入门篇)

    前言 我们在前面的文章中,和大家分享过接口自动化测试一些基本的实现方法,但是,你很快就会发现,如果在测试脚本中硬编码测试数据的话,测试脚本灵活性会非常低.而且,对于那些具有重复的请求,而只是测试入参不 ...

  4. java移动端接口测试_移动端质量体系之性能测试(上)

    目前应用越来越多,竞争也越来越激烈,那用户体验就变得越来越重要.曾经一份报告这么说: 71%用户希望在手机上打开网页能跟电脑一样快 5秒钟被认为是用户能忍受的最长响应时间,如果响应时间超过5秒,50% ...

  5. 根据wsdl生成对应的Java代码进行接口测试(一)

    来源:http://www.blogjava.net/amigoxie/archive/2009/11/20/303038.html    在上两篇写WebService的文章中:       1)使 ...

  6. 接口 java性能_接口测试性能测试

    接口测试 接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 原理 ...

  7. 基于java的api接口测试,人生转折!

    前言 事务我们都知道是什么,而Spring事务就是在数据库之上利用AOP提供声明式事务和编程式事务帮助我们简化开发,解耦业务逻辑和系统逻辑.但是Spring事务原理是怎样?事务在方法间是如何传播的?为 ...

  8. java和webservice接口测试_webservice接口测试

    1,用soupui进行测试 2,安装soupUI 3,测试的时候是给了一个wdsl 操作步诹:new (name , 填写地址)---导入wsdl文件---看到所有的接口 发送请求的格式 canshu ...

  9. Java编写的接口测试工具

    这几天由于要频繁地使用一些天气数据接口,但是每次都要频繁的打开网页,略显繁琐,故就自己做了两个json数据获取的小工具. 第一个 先来看看第一个吧,思路是使用一个网络流的处理,将返回的json字符串数 ...

  10. java移动端接口测试_借助Charles来测试移动端-下篇

    本篇是借助Charles来测试移动端的下半篇.(上篇任意门点我) 上次说到可以借助Charles来抓移动端的网络请求,接下来,我们来看一下怎么通过Charles来模拟返回,还是以网页版豆瓣为例. 先找 ...

最新文章

  1. Jupyter Notebook已出现“返祖现象”,这款工具让你在终端里使用它
  2. Docker简单的使用命令
  3. yarn下载依赖慢的解决方法
  4. 由openSession、getCurrentSession和HibernateDaoSupport浅谈Spring对事物的支持
  5. HTML单页营销宣传专题页源码
  6. 5.6 Transformer-XL讲解 意境级
  7. linux 围棋界面,围棋GUI界面Sabaki怎么用?
  8. java软件的安装过程
  9. echarts无数据时显示暂无数据或者用图片代替
  10. Pytorch入门+实战系列五:Pytorch情感分类
  11. 如何利用IDM加速下载百度网盘大文件
  12. k8s calico 插件错误:Number of node(s) with BGP peering established = 0 calico/node is not ready: BIRD is
  13. Ubuntu 设置PTP时间同步
  14. 【C++】通信录管理系统
  15. Linux perm
  16. Dynamics 365(CRM) 欢迎加入商务技术交流QQ群(MSCRM商务技术交流群149371424)
  17. 以蜜代糖促进心脑血管健康
  18. 工作很重要,但别忘了休息
  19. 【C】C语言中的设计模式
  20. TestDirector用户手册

热门文章

  1. jquery开发插件_如何开发jQuery插件
  2. java设计模式工厂模式_Java中的桥梁设计模式
  3. junit5 动态测试_JUnit 5嵌套测试
  4. c语言 ++ --运算符_了解C ++中的删除运算符
  5. java java se_Java SE 9:不可变列表的工厂方法
  6. 运行Eclipse出错:Failed to load the JNI shared library
  7. 开课吧Java课堂:如何使用比较函数?
  8. Spring boot Jar和war运行差异
  9. 微信小程序“信用卡还款”项目实践
  10. 简单谈谈视频网站分析