zoukankan      html  css  js  c++  java
  • java

     静态包导入:

    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();
     
  • 相关阅读:
    Matlab 绘制三维立体图(以地质异常体为例)
    Azure DevOps的variable group实现array和hashtable参数的传递
    Azure DevOps 利用rest api设置variable group
    Azure AADSTS7000215 其中一种问题的解决
    Power BI 实现实时更新Streaming Dataset
    AAD Service Principal获取azure user list (Microsoft Graph API)
    Matlab 沿三维任意方向切割CT图的仿真计算
    Azure Powershell script检测登陆并部署ARM Template
    Azure KeyVault设置策略和自动化添加secrets键值对
    Azure登陆的两种常见方式(user 和 service principal登陆)
  • 原文地址:https://www.cnblogs.com/pengranxindong/p/10191880.html
Copyright © 2011-2022 走看看