API Testing với Postman (Phần 18) – validate json schema

Chắc cũng chưa có nhiều bạn biết về Json Schema và chưa biết cách test cái đó, nên mình viết bài này để các bạn biết thêm 1 cách test.

I. Json Schema là gì? Dùng làm gì?

1.Định nghĩa

  • Schema nghĩa tiếng anh là khung, giống như outline hoặc model.

JSON Schema is a vocabulary that allows you to annotate and validate JSON documents.

https://json-schema.org/
  • Từ bản Mô tả data format của json –> chúng ta áp dụng kiểm tra cấu trúc dữ liệu json khi làm API test. Nói đơn giản, chúng ta chỉ kiểm tra cái khung của response thôi, chứ không kiểm tra data của response.

2. Vậy khi nào thì dùng cái này?

  • Khi mình muốn verify nhanh, không muốn mất quá nhiều thời gian vào việc viết test check từng data trong response.
  • Khi mình không biết phải test data trong response như thế nào? Ví dụ: có 1 API trả về 1 list các quyển sách, bạn không biết được số lượng chính xác là bao nhiêu quyển và có những quyển sách nào, chỉ biết cấu trúc response –> chỉ verify được cấu trúc của response. (Ok, đây là ví dụ, xin đừng bắt bẻ.)

II. Cách thực hiện

1. Response là Object

Test sẽ là:

const schema = {
  "type": "object",
  "properties": {
    "id": {"type": "number"},
    "firstName": {"type": "string"},
    "lastName": {"type": "string"},
    "email": {"type": "string"},
    "programme": {"type": "string"},
    "courses": {"type": "array"}
  },
// Field nào là bắt buộc thì liệt kê ở phần require
  "require": ["id", "courses"]
};

pm.test("Validate schema", () => {
    pm.response.to.have.jsonSchema(schema);
});

URL cho bạn muốn thử: https://run.mocky.io/v3/a7b67072-41b3-4a4b-89b8-a540bc17b08b

Type dữ liệu là những loại sau đây:

  • string
  • number
  • boolean
  • null
  • object
  • array

Run trên postman:

2. Khi có Nested Object

Test sẽ là:

const schema = {
    "type": "object",
    "properties": {
        "code": { "type": "string" },
        "error": {
            "type": "object",
            "properties": {
                "message": { type: "string" }
            },
            "required": ["message"]
        }
    },
    "required": ["code", "error"]
};

pm.test("Validate schema", () => {
    pm.response.to.have.jsonSchema(schema);
});

URL cho bạn muốn thử: https://run.mocky.io/v3/79fd4165-de48-41d9-bfab-822ce724a5e0

III. Tổng kết

Thực ra thì schema còn khá nhiều thứ phức tạp và loằng ngoằng, thiết nghĩ mình cũng không cần thiết đến mức đó, dừng lại ở mức cơ bản, kiểm tra type và required fields chắc cũng đủ rồi. Nếu bạn thấy hứng thú, muốn tìm hiểu thêm thì vào đây.

0

Leave a Reply

Your email address will not be published. Required fields are marked *