美文网首页
RestAssured初探

RestAssured初探

作者: D_w | 来源:发表于2021-12-15 09:35 被阅读0次
    package com.dw.cases;
    
    import io.restassured.http.ContentType;
    import io.restassured.http.Cookie;
    import io.restassured.http.Header;
    import io.restassured.http.Headers;
    import io.restassured.response.Response;
    import org.testng.annotations.Test;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.concurrent.TimeUnit;
    
    import static io.restassured.RestAssured.*;
    import static org.hamcrest.Matchers.*;
    
    public class Testassured {
    
        /**
         * get带一个参数  http://jsonplaceholder.typicode.com/posts?userId=2
         */
        @Test
        public void testparam(){
            given().
                    param("userId",2).
                    when().
                    get("http://jsonplaceholder.typicode.com/posts").
                    then().
                    statusCode(200).log().all();
        }
    
        /**
         * get带多个参数  http://jsonplaceholder.typicode.com/posts?userId=2&id=14
         */
        @Test
        public void testparams(){
            Map<String,String> parameters = new HashMap<String, String>();
            parameters.put("userId","2");
            parameters.put("id","14");
    
            given().
                    params(parameters).
                    when().
                    get("http://jsonplaceholder.typicode.com/posts").
                    then().
                    statusCode(200).log().all();
        }
    
        /**
         * 测试 带一个请求头字段
         */
        @Test
        public void testRequestWithHeader() {
            given().
                    header("accept-encoding", "gzip,deflate").
                    when().log().all().
                    get("http://jsonplaceholder.typicode.com/posts").
                    then().
                    statusCode(200);
        }
    
        /**
         * 测试 带多个头字段的请求
         */
        @Test
        public void testRequestWithHeaders() {
            //构造一个Map对象,用来存多个参数和值
            Map<String, String> headers = new HashMap<String,String>();
            headers.put("accept-encoding", "gzip,deflate");
            headers.put("accept-language", "zh-CN");
    
            given().
                    headers(headers).
                    when().log().all().
                    get("http://jsonplaceholder.typicode.com/posts").
                    then().
                    statusCode(200);
        }
    
        /**
         * 测试响应内容是xml数据
         */
        @Test
        public void testSingleXMLContent() {
            given().
                    get("http://www.thomas-bayer.com/sqlrest/INVOICE/").
                    then().
                    log().all().
                    contentType(ContentType.XML);
        }
    
        /**
         * 多个测试点一行代码去校验
         */
        @Test
        public void testStatusCode(){
            given().
                    get("http://jsonplaceholder.typicode.com/posts/3").
                    then().
                    body("id", equalTo(3)).and().body("title", containsString("exercitationem repellat"));  // 部分匹配用containsString,完全匹配用hasItem
        }
    
        /**
         * find value by xpath
         */
        @Test
        public void findValueByXpath() {
            given().
                    get("http://www.thomas-bayer.com/sqlrest/CUSTOMER/10/").
                    then().
                    body(hasXPath("/CUSTOMER/FIRSTNAME"), containsString("Sue"));
        }
    
        /**
         * 一个post请求举类
         */
        @Test
        public void testAPostMethod() {
            given().
                    param("pwd", "sanfeng").
                    param("type", "username").
                    param("accounts", "sanfeng").
    //                header("Content-Type", "application/x-www-form-urlencoded").
            when().
                    post("http://shop-xo.hctestedu.com/index.php?s=/api/user/login&application=app").
                    then().statusCode(200).log().all();
        }
    
        /**
         * 使用path方法提取内容
         */
        @Test
        public void testExtractDetailsUsingPath() {
            String href =
                    when().
                            get("http://jsonplaceholder.typicode.com/photos/1").
                            then().
                            contentType(ContentType.JSON).
                            body("albumId", equalTo(1)).
                            extract().
                            path("url");
            System.out.println(href);
    
            when().get(href).then().statusCode(304);
    
        }
    
        /**
         * 先拿到响应对象,然后再解析
         */
        @Test
        public void testFirstGetResponseThenDoActions() {
            Response resp = get("http://jsonplaceholder.typicode.com/photos/1").
                    then().
                    extract().
                    response();
            // 解析响应
            System.out.println("Context Type: " + resp.contentType());
            System.out.println("Status Code: " + resp.statusCode());
            System.out.println("Href: " + resp.path("url"));
        }
    
        /**
         * 验证响应文件类型是html
         */
        @Test
        public void testResponseContentType2() {
            given().
                    get("https://www.baidu.com").
                    then().
                    statusCode(200).
                    contentType(ContentType.HTML);
        }
    
        /**
         * 得到响应头
         */
        @Test
        public void testGetResponseHeaders() {
            Response res = get("http://shop-xo.hctestedu.com/index.php");
            // 得到一个响应header中字段
            String headerCFRAY = res.getHeader("Connection");
            System.out.println("Connection: " + headerCFRAY);
    
            // 得到全部的headers
            Headers headers = res.getHeaders();
            for (Header h : headers) {
                System.out.println(h.getName() + ":" + h.getValue());
            }
        }
    
        /**
         * 得到cookies
         */
        @Test
        public void getCookies() {
            Response res = get("http://shop-xo.hctestedu.com/index.php");
            Map<String, String> cookies = res.getCookies();
    
            //遍历集合,拿到每一个cookies
            for (Map.Entry<String, String> entry : cookies.entrySet()) {
                System.out.println(entry.getKey() + ":" + entry.getValue());
            }
    
        }
    
    
        /**
         * 得到cookies详细信息
         */
        @Test
        public void getCookiesDetailsInfo() {
            Response res = get("http://shop-xo.hctestedu.com/index.php");
    
            //得到一个详细cookies对象
            Cookie c = res.getDetailedCookie("PHPSESSID");
            System.out.println("判断这个cookies是否有过期时间设定: " + c.hasExpiryDate());
            System.out.println("打印cookies的过期时间: " + c.getExpiryDate());
            System.out.println("判断是否值: " + c.hasValue());
        }
    
        /**
         * get请求参数数据设置:queryParam
         */
        @Test
        public void testQueryParam() {
            given().
                    queryParam("userId", "3").
                    when().
                    get("http://jsonplaceholder.typicode.com/posts/").
                    then().
                    statusCode(200);
        }
    
        /**
         * POST请求参数设置:formParam()
         */
        @Test
        public void testFormParam() {
            given().
                    formParam("name", "Tom1").
                    formParam("job", "Tester").
                    when().
                    get("https://reqres.in/api/users").
                    then().
                    statusCode(200).log().all();
        }
    
        @Test
        public void testPataParametersType1() {
            given().
                    pathParam("section","posts").   // 我理解这里pathparam就是给url中占位
                    pathParam("id","3").
                    when().
                    get("http://jsonplaceholder.typicode.com/{section}/{id}").
                    then().
                    statusCode(200);
        }
    
        /**
         * 状态码断言
         */
        @Test
        public void testStatusInResponse() {
    
            given().get("http://jsonplaceholder.typicode.com/photos/").then().assertThat().statusCode(200).log().all();
            given().get("http://jsonplaceholder.typicode.com/photos/").then().assertThat().statusLine("HTTP/1.1 200 OK");
            given().get("http://jsonplaceholder.typicode.com/photos/").then().assertThat().statusLine(containsString("OK"));
    
        }
    
        /**
         * 响应header断言
         */
        @Test
        public void testResponseHeader() {
            given().
                    get("http://shop-xo.hctestedu.com/index.php").
                    then().
                    assertThat().header("Cache-Control","no-store, no-cache, must-revalidate");
    
            given().
                    get("http://shop-xo.hctestedu.com/index.php").
                    then().
                    assertThat().headers("Server","nginx","Vary", containsString("Accept"));
        }
    
        /**
         * 响应时间
         * 这个包含,http请求加响应处理时间 加上我们使用rest assured这个工具产生的时间之和
         */
        @Test
        public void testResponseTime() {
            long t = given().get("http://shop-xo.hctestedu.com/index.php").time();
            System.out.println(t);
        }
    
        @Test
        public void testResponseLessThanTime() {
            given().get("http://shop-xo.hctestedu.com/index.php").then().time(lessThan(2000L));
        }
    
        /**
         * 响应正文中的属性使用lambda表达式来断言
         */
        @Test
        public void testBodyParameterInResponse() {
            given().
                    get("http://jsonplaceholder.typicode.com/photos/1/").
                    then().
                    body("thumbnailUrl", response -> equalTo("https://via.placeholder.com/150/92c952"));
    
            given().
                    get("http://jsonplaceholder.typicode.com/photos/1/").
                    then().
                    body("thumbnailUrl", endsWith("92c952"));
        }
    
        public void testshopParam() {
            given().
                    formParam("pwd", "sanfeng").
                    formParam("type", "username").
                    formParam("accounts", "sanfeng").
                    when().
                    get("http://shop-xo.hctestedu.com/index.php?s=/api/user/login&application=app").
                    then().
                    statusCode(200).log().all();
        }
    }
    
    

    相关文章

      网友评论

          本文标题:RestAssured初探

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