美文网首页软件测试
REST Assured+testng接口测试学习

REST Assured+testng接口测试学习

作者: 明小五 | 来源:发表于2020-06-10 16:17 被阅读0次

    REST Assured是一个可以简化HTTP Builder顶层 基于REST服务的测试过程的Java DSL(针对某一领域,具有受限表达性的一种计算机程序设计语言)。它支持发起post,get,put,delete,options,patch和head请求,并且可以用来验证和校对这些请求的响应信息。

    一、引入jar包

         <dependency>
                <groupId>io.rest-assured</groupId>
                <artifactId>rest-assured</artifactId>
                <version>3.3.0</version>
                <scope>test</scope>
         </dependency>
    

    二、创建测试demo,命名为:RestClass

    建议从以下的类中静态导入方法,以提高使用rest-assured的效率

    import static io.restassured.RestAssured.given;
    import static io.restassured.matcher.RestAssuredMatchers.*;
    import static org.hamcrest.Matchers.*;
    

    如果需要使用json Schema Validation可以静态导入:

    import static io.restassured.module.jsv.JsonSchemaValidator.*;
    

    1、测试登录接口

    public class RestClass {
        @Test
        public void testDemo(){
            Response response = given()
                    .queryParam("account", "zhangsan")//账号
                    .queryParam("pwd", "123456")//密码
                    .when()
                    .post("http://xxx/xxx/account/user/checklogin");//登录接口
           
            response.then().log().all();//打印response
    
        }
    }
    

    log().all():打印所有log,可以查看有请求和响应的信息
    given():一次网络请求所需要的条件都写在这里,头信息、query参数
    when():触发条件

    返回结果如图:


    image.png

    1、如果想提取body中的部分数据做验证,假设返回的json如下:

    {
        "ret":0,
        "content":{
            "is_login":true,
            "uid":"8540002397328101648",   
            "name":"管理员",
            "role_type":0,
            "role":"6",
            "is_provider":false,
            "provider_type":"",
            "provider_info":"",
            "token":"36f9e5c381474a63d03c1d37117ec23d",
    },
        "msg":""
    }
    

    代码可写为:

    public class RestClass {
        @Test
        public void testDemo(){
            Response response = given()
                    .queryParam("account", "zhangsan")//账号
                    .queryParam("pwd", "123456")//密码
                    .when()
                    .post("http://xxx/xxx/account/user/checklogin");//登录接口
           
            response.then()
                    .statusCode(200) //验证响应状态码200
                    .body("ret",equalTo(0))//验证body返回的ret=0
                    .body("content.is_login",equalTo("true"));//验证is_login=true
    

    then():断言
    content.is_login:根节点.子节点
    .body() 可以无限的写下去
    equalTo也可以换成hasItems,equalTo 和 hasItems 是 Hamcrest matchers的方法,所以需要静态导入 org.hamcrest.Matchers。

    2、获取所有额header信息,封装为list:
    List<?> list = response.headers().asList();
    3、将返回的body转换为string类型:
    response.body().asString();

    2、POST请求(带Cookie)

    public class RestClass {
        @Test
        public void testDemo(){
            Response response = given()
                    .queryParam("pn", "0")
                    .queryParam("rn", "10")
                    .header("Cookie", " MISSESSID=cui78o8n7t1jk074ssf8k82bl5; zone_id=10004; uid=324632132374354")
                    .when()
                    .post("http://node/xxx/v1/Goods/list");
        }
    }
    

    3、Get请求

    和post请求一样,将post换成get即可

    public class RestClass {
        @Test
        public void testDemo(){
            Response response = given()
                    .queryParam("status", "1")
                    .header("Cookie", " MISSESSID=cui78o8n7t1jk074ssf8k82bl5; zone_id=10004; uid=324632132374354")
                    .when()
                    .get("http://node/xxx/yyyy/v1/Mis/Goods/list");
        }
    }
    

    相关文章

      网友评论

        本文标题:REST Assured+testng接口测试学习

        本文链接:https://www.haomeiwen.com/subject/jiqptktx.html