Rest-Assured新手入门(2)---简单的示例

前提

上一篇文章介绍了,Rest-Assured的环境搭建,光说不练假把式,对着官方文档,写一个简单的post请求,先入门。
学习的重要资料还是 官方文档 ,这篇文章重点也是对照官方文档写的。

示例

官方示例

先看官方给的一个例子:
假设一个url http://localhost:8080/lotto 返回的JSON如下所示

{
"lotto":{
 "lottoId":5,
 "winning-numbers":[2,45,34,23,7,5,3],
 "winners":[{
   "winnerId":23,
   "numbers":[2,45,34,23,3,5]
 },{
   "winnerId":54,
   "numbers":[52,3,12,11,18,22]
 }]
}
}

如果要验证这个接口的返回值对不对,一个简单的例子:

get("/lotto").then().body("lotto.lottoId", equalTo(5));

这个可以验证返回的lottoID是不是5

上面是一个简单的get请求,同样官方也提供了post请求的示例,看完官方的两个请求之后,再以 雪球 为例,简单介绍post 请求及其他断言方式:
假设一个url http://localhost:8080/greetXML 接口返回的内容是XML,如下所示:


   {params("firstName")}
   {params("lastName")}

通过rest-assurd可以这样写:

given().
         parameters("firstName", "John", "lastName", "Doe").
when().
         post("/greetXML").
then().
         body("greeting.firstName", equalTo("John")).

如果想同时验证firstname 和 lastname 可以这样写:

given().
         parameters("firstName", "John", "lastName", "Doe").
when().
         post("/greetXML").
then().
         body("greeting.firstName", equalTo("John")).
         body("greeting.lastName", equalTo("Doe"));

或者简单些:

with().parameters("firstName", "John", "lastName","Doe").when().post("/greetXML").then().body("greeting.firstName", equalTo("John"), "greeting.lastName", equalTo("Doe"));

上面是官方的两个例子,比较简单,下面以雪球登录为例,简单的介绍一下post请求

雪球为例

首先登录雪球,随便输入一个号码和错误的密码,打开开发者选项,可以看到这个登录时post请求方式,同时传了三个参数(记住我这个参数可以为空),即用户名、密码

Rest-Assured新手入门(2)---简单的示例_第1张图片
雪球.png

代码如下:

given().
                header("X-Requested-With" ,"XMLHttpRequest").
                param("username","15211224455").
                param("password","123").
        when().
                post("https://xueqiu.com/snowman/login").
        then().
                log().all().
                body("error_description",equalTo("用户名或密码错误")).
                body("error_code",equalTo("20082"));

这边加上了log().all().就是打印所有的信息,类似的可打印cookie、headers、status等等,可以全部打印出来研究下

Rest-Assured新手入门(2)---简单的示例_第2张图片
log.png

这个时候,如果我们运行这个脚本,会发现运行失败,IDEA给出的报错:

报错.png

原因是被劫持挂了代理,只需要加上一句代码就可以解决:

RestAssured.useRelaxedHTTPSValidation();
其他断言方式

使用JSON path:

Response response = given().
                header("X-Requested-With", "XMLHttpRequest").
                param("username", "15211224455").
                param("password", "123").
                when().
                post("https://xueqiu.com/snowman/login");

        String res = response.asString();
        JsonPath jp = new JsonPath(res);
        assertEquals("20082",jp.get("error_code"));

解析Json:

ValidatableResponse response = given().
                header("X-Requested-With", "XMLHttpRequest").
                param("username", "15211224455").
                param("password", "123").
                when().
                post("https://xueqiu.com/snowman/login").then();

        response.log().all()
                .body("error_code", equalTo("20082"));

这两种断言方式,主要是用于接口返回的JSON格式比较复杂的情况
以上所有,最近几天所学,小白刚入门,有讲的不对的地方,轻拍。

你可能感兴趣的:(Rest-Assured新手入门(2)---简单的示例)