zoukankan      html  css  js  c++  java
  • rest-assured的根路径(root path)和URL编码(URL Encoding)

    一、根路径(Root path)  

      为了避免在body方法中使用重复的路径来断言,我们可以指定一个根路径(root path),比如:

    我们以前的写法是:

    1 when().
    2          get("/something").
    3 then().
    4          body("x.y.firstName", is(..)).
    5          body("x.y.lastName", is(..)).
    6          body("x.y.age", is(..)).
    7          body("x.y.gender", is(..));

    现在我们可以使用root path的方法来写:

    1 when().
    2          get("/something").
    3 then().
    4          root("x.y").         //我们也可以使用root方法来设置根路径
    5          body("firstName", is(..)).
    6          body("lastName", is(..)).
    7          body("age", is(..)).
    8          body("gender", is(..));

    我们也可以设置默认的根路径:

    1 RestAssured.rootPath="x.y";

    在许多高级的测试用例中,在根路径上附加一些参数也非常有用,我们可以使用 appendRoot 方法来实现:

    1 when().
    2          get("/jsonStore").
    3 then().
    4          root("store.%s", withArgs("book")).
    5          body("category.size()", equalTo(4)).
    6          appendRoot("%s.%s", withArgs("author", "size()")).
    7          body(withNoArgs(), equalTo(4));

    这里也可以对根路径进行拆分:

    1 when().
    2          get("/jsonStore").
    3 then().
    4          root("store.category").
    5          body("size()", equalTo(4)).
    6          detachRoot("category").
    7          body("size()", equalTo(1));

    二、URL编码(URL Encoding)

      由于rest-assured提供了非常好的自动编码功能,通常情况下我们在使用rest-assured时不需要考虑URL编码的事情。但是在有些测试用例当中,我们需要关闭URL编码的功能。其中一个原因是我们在将参数传递给rest-assured之前,我们已经对参数进行了URL编码,为了避免二次编码我们需要告诉rest-assured关闭URL编码的功能。比如:

    1 String response = given().urlEncodingEnabled(false).get("https://jira.atlassian.com:443/rest/api/2.0.alpha1/search?jql=project%20=%20BAM%20AND%20issuetype%20=%20Bug").asString();
    2 ..

    或者:

    1 RestAssured.baseURI = "https://jira.atlassian.com";
    2 RestAssured.port = 443;
    3 RestAssured.urlEncodingEnabled = false;
    4 final String query = "project%20=%20BAM%20AND%20issuetype%20=%20Bug";
    5 String response = get("/rest/api/2.0.alpha1/search?jql={q}", query);
    6 ..
  • 相关阅读:
    面向对象的思维
    343. 整数拆分
    413. 等差数列划分
    303. 区域和检索
    62. 不同路径
    char类型与int类型相加
    mybatis里面resultmap的问题
    easyui的datagrid如何获取一个对象里面的成员对象里面的属性?
    ==和equls的区别
    泛型的使用思想
  • 原文地址:https://www.cnblogs.com/lwjnicole/p/8287986.html
Copyright © 2011-2022 走看看