rest-assured接口测试学习(三)

前文:
rest-assured接口测试学习(一)
rest-assured接口测试学习(二)

补充知识

一、全局封装

1.全局RestAssured对象
  • RestAssured.XXX 全局变量
  • BaseURI
2.spec方法通用的断言

每个请求都会共用的参数:比如URI 、cookies,或者每个接口都有的断言statusCode是200……可以使用specification

public class Baidu {
    public static RequestSpecification requestSpecification;
    public static ResponseSpecification responseSpecification;
    @Before
    public void gen(){
        //通用请求
        requestSpecification=new RequestSpecBuilder().build();
        requestSpecification.port(80);
        requestSpecification.cookie("s_id","leitianxiao");
        requestSpecification.header("User-Agent","Andriod");
        //通用断言
        responseSpecification=new ResponseSpecBuilder().build();
        responseSpecification.statusCode(200);
        responseSpecification.body(hasItems("0","1"));

//其他用例里使用
@Test
    public void testGetHtml(){
        given().
                //请求使用
                spec(requestSpecification);
                get("http://www.baidu.com").
        then().
                //断言使用
                spec(responseSpecification);
    }
}
3.filter方法进行加解密封装(利用filter机制实现自动解密)
  • 修改request
    可以修改请求内容(自动带上cookie)
    通用的请求数据记录(记录所有的请求和响应)

二、对接口时间进行断言

when().
            get("/lotto").
then().
            time(lessThan(2000L));//响应时间不超过2000毫秒

除了进行功能测试,对响应时间有个基本的要求

三、schema自动校验

RestAssured有一套自己的schema自动校验机制

  • schema的生成借助于在线服务
  • 使用schema api断言

schema自动生成方法

  • 每次运行的时候自动保存当前的schema
  • 下次运行对比上次的schema如果发现变更就报错
  • saveSchema+diffSchema

实践

  • 官网:JSON Schema

  • 作用:JSON Schema可以对JSON进行注释和校验,我们对一个接口的断言最多写10个左右,对其余大量的数据的response没有校验,JSON Schema就是对大量数据的Json进行一个数据格式的验证,包括字段的数据类型、范围、长度。

  • 生成schema文件:Json Schema Tool

    12041448-006ce3ba0f7eda40.png

    $schema关键字指出此架构是根据标准的特定草稿编写的,"$schema": "http://json-schema.org/draft-07/schema#"表示根据draft-07草案编写。
    $id关键字定义模式的URI,并解析模式中其他URI引用的基URI。
    $title$description注释关键字仅是描述性的。它们不会对要验证的数据添加约束。使用这两个关键字说明了模式的意图。
    type验证关键字定义我们的JSON数据的第一个约束,在这种情况下,它必须是一个JSON对象。"type": "object"验证类型是object,"type": "array"验证类型是数组,"type": "boolean"验证类型是布尔类型。
    $required验证key字段的列表。
    properties验证关键字。

  • 手工编辑增强


    12041448-5b30a56c4d0db907.png

    例:String断言,对所有type为String的进行断言,长度在5-10之间


    12041448-e9dbf56c35159dde.png

    12041448-6bed35d473607171.png

    所以可以通过手动添加这个字段来约束JSON数据。
  • 如何在RestAssured使用

  1. 导入依赖
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>json-schema-validator</artifactId>
    <version>3.0.1</version>
</dependency>
  1. 一般Schema的文件比较大,使用时,通常存成一个的文件。


    12041448-4d0627170d3db8d5.png
  2. 调用matchesJsonSchemaClasspath等系列方法
    静态导入:import static io.restassured.module.jsv.JsonSchemaValidator.*;
    常用断言方式一:assertThat().body(matchesJsonSchemaInClasspath("data/userInfo-schema.json"));
    常用断言方式二:assertThat().body(matchesJsonSchema(new File("data/userInfo-schema.json")));

故意写错一个验证类型看看效果,把本应该是string类型的改为boolean。


12041448-deaeb1562be8fcba.png

12041448-c56b7feb06fb546f.png

warning可以先不管,找到error~可以看出说实例类型是string,而被允许的类型是boolean。


12041448-2829fb7d6dd7095d.png

四、https请求

useRelaxedHTTPSValidation(); //信任https请求

猜你喜欢

转载自blog.csdn.net/weixin_34288121/article/details/90915541