postman Run Collection可以通过更改正文内容来使用相同的URL进行重复API调用.
Mocking server
另存为server.js
const express = require('express');
const fs = require('fs');
const multer = require('multer')
const cors = require('cors');
const app = express();
// for 表格-日期
const forms = multer();
app.use(forms.array());
app.use(cors());
const PORT = 3000;
// Function to generate random 5-digit number
function generateRandomNumber() {
return Math.floor(10000 + Math.random() * 90000);
}
app.post('/v1/address', (req, res) => {
fs.readFile('address-data.json', 'utf8', (err, data) => {
if (err) {
console.error('Error reading file:', err);
res.status(500).send('Internal Server Error');
return;
}
try {
const jsonData = JSON.parse(data);
res.json(jsonData);
} catch (error) {
console.error('Error parsing JSON:', error);
res.status(500).send('Internal Server Error');
}
});
});
app.post('/v1/request', (req, res) => {
const { FullName, ApplicantWebGuid, Address } = req.body;
// Form data print
console.log(`FullName: ${FullName}`);
console.log(`ApplicantWebGuid: ${ApplicantWebGuid}`);
console.log(`Address: ${Address}`);
res.json({
Application: 'virtual Application',
name: FullName,
id: ApplicantWebGuid,
address: Address,
result: 'Approved'
});
});
// Start the server
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
Address data
模拟服务器将使用此地址
另存为'address-data.json'
{
"data": [
{
"FullName" : "John Doe",
"ApplicantWebGuid": "12345",
"Address": "Main Street"
},
{
"FullName" : "Jack Brown",
"ApplicantWebGuid": "67890",
"Address": "Main Street"
}
]
}
安装服务器依赖项
npm install express multer cors
运行服务器
node server.js
API Test
获取地址
URL
http://localhost:3000/v1/address
申请申请
URL
POST http://localhost:3000/v1/request
表格-日期
FullName : John Doe
ApplicantWebGuid: 12345
Address: Main Street
Loop Test
节省1-1-demo.postman_collection.json
{
"info": {
"_postman_id": "b0791408-a367-47c1-a96c-3b305a634c10",
"name": "1-1-demo",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "1826150"
},
"item": [
{
"name": "Get Address",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = pm.response.json();\r",
"const FullNames = jsonData.data.map(item => item.FullName);\r",
"const ApplicantWebGuids = jsonData.data.map(item => item.ApplicantWebGuid);\r",
"const Addresss = jsonData.data.map(item => item.Address);\r",
"pm.environment.set('FullNames', JSON.stringify(FullNames));\r",
"pm.environment.set('ApplicantWebGuids', JSON.stringify(ApplicantWebGuids));\r",
"pm.environment.set('Addresss', JSON.stringify(Addresss));\r",
"console.log(\"FullNames data: \" + pm.environment.get(\"FullNames\"));\r",
"console.log(\"ApplicantWebGuids data: \" + pm.environment.get(\"ApplicantWebGuids\"));\r",
"console.log(\"Addresss data: \" + pm.environment.get(\"Addresss\"));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "http://localhost:3000/v1/address",
"protocol": "http",
"host": [
"localhost"
],
"port": "3000",
"path": [
"v1",
"address"
]
}
},
"response": []
},
{
"name": "Request A",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = pm.response.json();\r",
"\r",
"console.log(\"FullName: \" + pm.environment.get(\"FullName\"));\r",
"\r",
"let FullNames = JSON.parse(pm.environment.get(\"FullNames\"));\r",
"if (FullNames.length > 0){\r",
" postman.setNextRequest(\"Request A\");\r",
"}\r",
"\r",
"const FullName = jsonData.name;\r",
"\r",
"pm.test('FullName suhold be applicant equal', function () {\r",
" pm.expect(FullName).to.eql(pm.environment.get(\"FullName\"));\r",
"});"
],
"type": "text/javascript"
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"let FullNames = JSON.parse(pm.environment.get(\"FullNames\"));\r",
"console.log(FullNames);\r",
"pm.environment.set(\"FullName\", FullNames.shift())\r",
"pm.environment.set(\"FullNames\", JSON.stringify(FullNames));\r",
"\r",
"let ApplicantWebGuids = JSON.parse(pm.environment.get(\"ApplicantWebGuids\"));\r",
"console.log(ApplicantWebGuids);\r",
"pm.environment.set(\"ApplicantWebGuid\", ApplicantWebGuids.shift())\r",
"pm.environment.set(\"ApplicantWebGuids\", JSON.stringify(ApplicantWebGuids));\r",
"\r",
"let Addresss = JSON.parse(pm.environment.get(\"Addresss\"));\r",
"console.log(Addresss);\r",
"pm.environment.set(\"Address\", Addresss.shift())\r",
"pm.environment.set(\"Addresss\", JSON.stringify(Addresss));"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "FullName",
"value": "{{FullName}}",
"type": "text"
},
{
"key": "ApplicantWebGuid",
"value": "{{ApplicantWebGuid}}",
"type": "text"
},
{
"key": "Address",
"value": "{{Address}}",
"type": "text"
}
]
},
"url": {
"raw": "http://localhost:3000/v1/request",
"protocol": "http",
"host": [
"localhost"
],
"port": "3000",
"path": [
"v1",
"request"
]
}
},
"response": []
}
]
}
Import this collection into Postman
Run collection
Result
具有不同两个人名的相同URL API调用
和控制台屏幕上的测试登录结果.
http://localhost:3000/v1/request
Keys
Pre-request Scripts
选项卡获取人员信息
let FullNames = JSON.parse(pm.environment.get("FullNames"));
console.log(FullNames);
pm.environment.set("FullName", FullNames.shift())
pm.environment.set("FullNames", JSON.stringify(FullNames));
let ApplicantWebGuids = JSON.parse(pm.environment.get("ApplicantWebGuids"));
console.log(ApplicantWebGuids);
pm.environment.set("ApplicantWebGuid", ApplicantWebGuids.shift())
pm.environment.set("ApplicantWebGuids", JSON.stringify(ApplicantWebGuids));
let Addresss = JSON.parse(pm.environment.get("Addresss"));
console.log(Addresss);
pm.environment.set("Address", Addresss.shift())
pm.environment.set("Addresss", JSON.stringify(Addresss));
Body picked up one of people
Tests
选项卡判断匹配的用户是否正确
const jsonData = pm.response.json();
console.log("FullName: " + pm.environment.get("FullName"));
let FullNames = JSON.parse(pm.environment.get("FullNames"));
if (FullNames.length > 0){
postman.setNextRequest("Request A");
}
const FullName = jsonData.name;
pm.test('FullName suhold be applicant equal', function () {
pm.expect(FullName).to.eql(pm.environment.get("FullName"));
});