我有一个集合下的请求列表。我想根据通过数据文件传递的输入运行特定请求。
例如:
如果请求名称为 TC-1、TC-2、TC-3、TC-4...我只想根据数据文件中的输入运行 TC-2 和 TC-3。我将保留我的数据文件为 csv 格式并将我的所有输入保留在行中(如图所示]
谁能提供解决方案吗
提前致谢
只能从数据文件(环境 JSON)中选择请求。
在
Pre-request-script
点击,可以通过此功能跳过请求。
pm.execution.skipRequest();
环境变量也只能分配运行项。
所以这个逻辑可以处理
const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));
const requestName = pm.info.requestName;
let isTest = false;
_.forEach(testCaseIDs, (testCaseID) => {
if(requestName.includes(testCaseID)) {
isTest = true;
}
})
if (!isTest) {
console.log(requestName + " Skip");
pm.execution.skipRequest();
} else {
console.log(requestName + " Ran");
}
环境变量
我只想运行 8 个请求中的
TC-2
和 TC-3
请求鬃毛应包括 TC-[编号]
它可以灵活,像
[TC-1]
,[TC-1] name
,TC-1
,TC-1 name
可能。
另存为
1-demo.postman_collection.json
{
"info": {
"_postman_id": "2425762f-9acf-4ca9-b3e7-96a6be66ffea",
"name": "1-demo",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "2207020"
},
"item": [
{
"name": "[TC-1] Lion",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Lion\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Lion",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Lion"
}
]
}
},
"response": []
},
{
"name": "[TC-2] Elephant",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Elephant\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Elephant",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Elephant"
}
]
}
},
"response": []
},
{
"name": "TC-3 Tiger",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Tiger\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Tiger",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Tiger"
}
]
}
},
"response": []
},
{
"name": "TC-4 Kangaroo",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Kangaroo\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Kangaroo",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Kangaroo"
}
]
}
},
"response": []
},
{
"name": "TC-5 Gorilla",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Gorilla\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Gorilla",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Gorilla"
}
]
}
},
"response": []
},
{
"name": "TC-6 Polar Bear",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Polar Bear\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Polar%20Bear",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Polar%20Bear"
}
]
}
},
"response": []
},
{
"name": "TC-7",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Koala\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Koala",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Koala"
}
]
}
},
"response": []
},
{
"name": "[TC-8]",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const jsonData = JSON.parse(responseBody);\r",
"console.log(jsonData[0].name);\r",
"pm.test('Animal = ' + jsonData[0].name, function () {\r",
" pm.expect(jsonData[0].name).to.eql(\"Giraffe\");\r",
"});"
],
"type": "text/javascript",
"packages": {}
}
},
{
"listen": "prerequest",
"script": {
"exec": [
"const testCaseIDs = JSON.parse(pm.environment.get('testCaseIDs'));\r",
"const requestName = pm.info.requestName;\r",
"let isTest = false;\r",
"\r",
"if(testCaseIDs) {\r",
" _.forEach(testCaseIDs, (testCaseID) => {\r",
" if(requestName.includes(testCaseID)) {\r",
" isTest = true;\r",
" }\r",
" })\r",
"}\r",
"\r",
"if (!isTest) {\r",
" console.log(requestName + \" Skip\");\r",
" pm.execution.skipRequest();\r",
"} else {\r",
" console.log(requestName + \" Ran\");\r",
"}"
],
"type": "text/javascript",
"packages": {}
}
}
],
"request": {
"method": "GET",
"header": [
{
"key": "X-RapidAPI-Key",
"value": "1956f59b5msh089630402391f02p108b9bjsna7adb689e8c4",
"type": "text"
},
{
"key": "X-RapidAPI-Host",
"value": "gemini-pro-vision-ai1.p.rapidapi.com",
"type": "text"
}
],
"url": {
"raw": "https://freetestapi.com/api/v1/animals?search=Giraffe",
"protocol": "https",
"host": [
"freetestapi",
"com"
],
"path": [
"api",
"v1",
"animals"
],
"query": [
{
"key": "search",
"value": "Giraffe"
}
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"packages": {},
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"packages": {},
"exec": [
""
]
}
}
]
}
另存为
demo.postman_environment.json
{
"id": "8fb2f4e2-18a1-4300-a93e-2b6e3f611fd7",
"name": "demo",
"values": [
{
"key": "testCaseIDs",
"value": "[\"TC-2\",\"TC-3\"]",
"type": "default",
"enabled": true
}
],
"_postman_variable_scope": "environment",
"_postman_exported_at": "2024-04-18T18:06:11.388Z",
"_postman_exported_using": "Postman/10.24.22"
}
newman
来自环境文件
newman run 1-demo.postman_collection.json -e demo.postman_environment.json
结果
来自变量值
仅运行 TC-2 和 TC-5
newman run 1-demo.postman_collection.json --env-var "testCaseIDs=[\"TC-2\",\"TC-5\"]"
结果