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 ..
原文地址:https://www.cnblogs.com/lwjnicole/p/8287986.html