Thế nào là một dynamic request body, đó là 1 cái request body có data linh động, mỗi lần run test bạn không phải sửa lại data
Đây là request body thông thường
{
"firstname": "Jim",
"lastname": "Brown",
"totalprice": 111,
"depositpaid": true,
"bookingdates": {
"checkin": "2018-01-01",
"checkout": "2019-01-01"
},
"additionalneeds": "Breakfast"
}
Đây là dynamic request body, tất cả các vị trí đều là variable (biến)
{
"firstname": "{{firstname}}", //random first name
"lastname": "{{lastname}}", //random last name
"totalprice": {{totalprice}}, // 100 < price < 200
"depositpaid": {{depositpaid}}, // true or fail
"bookingdates": {
"checkin": "{{checkin}}", // >= today
"checkout": "{{checkout}}" // = today + (2/4) days
},
"additionalneeds": "{{additionalneeds}}"
// one in ["Breakfast", "view sea", "TV", "free transport"]
}
Nội dung
I. Postman cung cấp fake data cực dễ dùng
Full list ở đây: https://learning.postman.com/docs/writing-scripts/script-references/variables-list/
Chốt lại ta có:
"firstname": "{{$randomFirstName}}",
"lastname": "{{$randomLastName}}"
II. Random number
"totalprice": {{totalprice}}
Để random số trong 1 khoảng, có 1 vài cách làm như sau:
//Math.floor(Math.random() * (max - min + 1) ) + min;
let price = Math.floor(Math.random() * (200 - 100 + 1) ) + 100;
pm.environment.set("totalprice", price);
//_.random(min,max)
let price = _.random(100,200)
pm.environment.set("totalprice", price);
III. Lấy random 1 hoặc nhiều items trong 1 list
Trong bài trên có 2 biến như vậy:
"depositpaid": {{depositpaid}},
"additionalneeds": "{{additionalneeds}}"
Cách lấy random trong 1 list như sau
//_.sample(list)
let depositpaid = _.sample([true,false])
pm.environment.set("depositpaid", depositpaid);
const list = ["Breakfast", "view sea", "TV", "free transport"];
let additionalneeds = _.sample(list);
pm.environment.set("additionalneeds", additionalneeds);
IV. Làm việc với data là thời gian
"checkin": "{{checkin}}",
"checkout": "{{checkout}}"
Mình đã viết về date-time ở bài 22
const moment = require("moment");
const now = moment()
let checkin = now.add(_.random(5,10), 'h');
pm.environment.set("checkin", checkin.format("YYYY-MM-DD"));
let checkout = checkin.add(_.random(2,4), 'd');
pm.environment.set("checkout", checkout.format("YYYY-MM-DD"));
V. Tổng hợp
Nguồn:
https://giangtester.com/api-testing-voi-postman-phan-24-build-dynamic-request-body/