Ví dụ về Test Script trong postman

Để viết Script test đầu tiên bạn mở request trong postman và mở Tab Tests. Sau đó nhập đoạn code JavaScript sau:

pm.test("Status code is 200", function () {
  pm.response.to.have.status(200);
});

Trong đoạn code trên sử dụng thư viện pm và chạy method test. Đoạn text “Status code is 200” sẽ hiển thị ở ô test output. Các đoạn code verify dữ liệu có thể sử dụng cú pháp Chai Assertion Library BDD, cú pháp này giúp tối ưu hóa mức độ dễ đọc hiểu của các đoạn script. Trong ví dụ trên có sử dụng BDD là to.have để kiểm tra dữ liệu.

Đoạn code trên sẽ kiểm tra Respone code trả về từ api, nếu Respone code bằng 200 thì test sẽ pass, ngược lại thì test sẽ fail.

Việc verify kết quả trả về cũng có nhiều cách khác nhau, tùy thuộc theo ý thích của bạn. Đoạn mã sau cũng sẽ kiểm tra Respone code có bằng 200 không

pm.test("Status code is 200", () => {
  pm.expect(pm.response.code).to.eql(200);
});

Áp dụng nhiều điều kiện kiểm tra vào một hàm

Bạn có thể kết hợp nhiều điều kiện kiểm tra vào trong một hàm test như ví dụ sau:

pm.test("The response has all properties", () => {
    //parse the response JSON and test three properties
    const responseJson = pm.response.json();
    pm.expect(responseJson.type).to.eql('vip');
    pm.expect(responseJson.name).to.be.a('string');
    pm.expect(responseJson.id).to.have.lengthOf(1);
});

Nếu có một trong các điều kiện kiểm tra fail thì toàn bộ kết quả của hàm test sẽ fail. Tất cả điều kiện kiểm tra đều pass thì kết quả hàm test mới pass.

Parsing response body data (Phân tích dữ liệu trả về)

Việc đầu tiên trước khi verify được kết quả, bạn phải Parse kết quả trả về

Parse dữ liệu JSON bạn sử dụng cú pháp sau:

const responseJson = pm.response.json();

Parse dữ liệu XML bạn sử dụng cú pháp sau:

const responseJson = xml2Json(pm.response.text());

Parse dữ liệu CSV, sử dụng tiện ích CSV parse

const parse = require('csv-parse/lib/sync');
const responseJson = parse(pm.response.text());

Parse dữ liệu HTML, sử dụng cheerio

const $ = cheerio.load(pm.response.text());
//output the html for testing
console.log($.html());

Xử lý dữ liệu không thể Parse

Nếu bạn không thể phân tích Respone trả về vì nó không thuộc các định dạng JSON, XML, CSV hay HTML, bạn vẫn có thể verify dữ liệu

Kiểm tra Respone trả về có chưa một chuỗi string nào đó không sử dụng cú pháp sau:

pm.test("Body contains string",() => {
  pm.expect(pm.response.text()).to.include("chuỗi bạn muốn kiểm tra");
});

Cú pháp trên sẽ kiểm tra toàn bộ nội dung của Respone xem có chưa đoạn chuỗi cần kiểm tra không. Việc so sánh Respone đúng bằng chuỗi cần kiểm tra sẽ chỉ đúng với các Respone ngắn, khi đó bạn dùng cú pháp sau:

pm.test("Body is string", function () {
  pm.response.to.have.body("chuỗi bạn muốn kiểm tra");
});

Kiểm tra các thành phần của Respone HTTP

Bạn có thể kiểm tra chính xác các phần của Respone như body, status code, headers, cookies, respone times, vv…

Testing response body

Ví dụ bạn có một respone body dạng JSON như sau:

{
     "name": "Jane",
     "age":23
}

Để kiểm tra các giá trị trả về trong body của ví dụ trên ta thực hiện các bước như sau:

  • Đầu tiên bạn sẽ viết hàm pm.test để đưa ra kết quả verify cho người dùng
  • Sau đó trong hàm test bạn cần parse dữ liệu JSON và gán vào một biến
  • Tiếp theo để verify dữ liệu bạn dùng hàm pm.expect và truyền các giá trị cần verify vào
pm.test("Person is Jane", () => {
  const responseJson = pm.response.json();
  pm.expect(responseJson.name).to.eql("Jane");
  pm.expect(responseJson.age).to.eql(23);
});

Testing status codes

Kiểm tra respone code như sau:

pm.test("Status code is 201", () => {
  pm.response.to.have.status(201);
});

Nếu bạn muốn kiểm tra nhiều dữ liệu trong một lần có thể dùng oneOf, ví dụ sau sẽ kiểm tra respone trả về là 200 và 201 đều pass:

pm.test("Successful POST request", () => {
  pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

Hoặc bạn cũng có thể kiểm tra respone code bằng text như sau:

pm.test("Status code name has string", () => {
  pm.response.to.have.status("Created");
});

Testing headers

Bạn có thể kiểm tra respone header có chưa thành phần nào đó như sau:

pm.test("Content-Type header is present", () => {
  pm.response.to.have.header("Content-Type");
});

Kiểm tra thành phần trong header bằng giá trị nào đó như sau:

pm.test("Content-Type header is application/json", () => {
  pm.expect(pm.response.headers.get('Content-Type')).to.eql('application/json');
});

Testing cookies

Bạn có thể kiểm tra respone trong cookies có xuất hiện thành phần nào đó không như sau:

pm.test("Cookie JSESSIONID is present", () => {
  pm.expect(pm.cookies.has('JSESSIONID')).to.be.true;
});

Kiểm tra thành phần trong cookies bằng giá trị nào đó như sau:

pm.test("Cookie isLoggedIn has value 1", () => {
  pm.expect(pm.cookies.get('isLoggedIn')).to.eql('1');
});

Testing response times

Kiểm tra thời gian phản hồi của Api như sau:

pm.test("Response time is less than 200ms", () => {
  pm.expect(pm.response.responseTime).to.be.below(200);
});

Hàm này sẽ pass khi thời gian phản hồi dưới 200 ms

Các ví dụ về verify respone trong postman hay sử dụng

So sánh respone với một biến

Đoạn code sau sẽ so sánh thuộc tính name trong kết quả trả về có bằng với biến environment có tên là name không:

pm.test("Response property matches environment variable", function () {
  pm.expect(pm.response.json().name).to.eql(pm.environment.get("name"));
});

Xem bài biến trong postman để hiểu về cách sử dụng biến

Kiểm tra kiểu dữ liệu trả về

Đoạn code sau kiểm tra loại dữ liệu trả về:

/* response has this structure:
{
  "name": "Jane",
  "age": 29,
  "hobbies": [
    "skating",
    "painting"
  ],
  "email": null
}
*/
const jsonData = pm.response.json();
pm.test("Test data type of the response", () => {
  pm.expect(jsonData).to.be.an("object"); //kiểm tra kết quả trả về là object
  pm.expect(jsonData.name).to.be.a("string"); //kiểm tra thuộc tính name là string
  pm.expect(jsonData.age).to.be.a("number"); //kiểm tra thuộc tính age là số
  pm.expect(jsonData.hobbies).to.be.an("array"); //kiểm tra thuộc tính hobbies là mảng
  pm.expect(jsonData.website).to.be.undefined; //kiểm tra thuộc tính website không được khai báo
  pm.expect(jsonData.email).to.be.null; //kiểm tra thuộc tính email là null
});

Kiểm tra các phần tử trong mảng

/*
response has this structure:
{
  "errors": [],
  "areas": [ "goods", "services" ],
  "settings": [
    {
      "type": "notification",
      "detail": [ "email", "sms" ]
    },
    {
      "type": "visual",
      "detail": [ "light", "large" ]
    }
  ]
}
*/

const jsonData = pm.response.json();
pm.test("Test array properties", () => {
    //kiểm tra mảng errors trống
  pm.expect(jsonData.errors).to.be.empty;
    //kiểm tra mảng areas có chứa phần tử "goods"
  pm.expect(jsonData.areas).to.include("goods");
    //tìm object trong mảng setting có type = "notification"
  const notificationSettings = jsonData.settings.find
      (m => m.type === "notification");
  pm.expect(notificationSettings)
    .to.be.an("object", "Could not find the setting");
    //kiểm tra thuộc tính detail trong object có chứa phần tử "sms"
  pm.expect(notificationSettings.detail).to.include("sms");
    //kiểm tra trong mảng detail có chứa các phần tử email, sms
  pm.expect(notificationSettings.detail)
    .to.have.members(["email", "sms"]);
});

Kiểm tra môi trường hiện tại

Giả sử muốn kiểm tra môi trường hiện tại có phải là môi trường Production hay không dùng câu lệnh sau:

pm.test("Check the active environment", () => {
  pm.expect(pm.environment.name).to.eql("Production");
});
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận