在我的集合中,我有许多带有断言的请求,因为我只需要运行特定的请求。假设我有 10 个请求,而我只需要运行 3,4 和 10 个请求,我如何通过在命令行中运行 newman 来做到这一点。
场景:
在下面的集合中,我有多个请求(以不同颜色标记)。假设我们的应用程序中有一个新版本,它仅影响标记为“黄色”的请求。在本例中,我只想运行标记为黄色的请求。
您可以通过预请求脚本中的 if 语句中的“pm.execution.skipRequest()”来完成。
示例: 该脚本由颜色值决定。 如果是绿色或全颜色,则运行请求。 如果是黄色或红色,请跳过请求。
const color = pm.environment.get('Color');
if (color != "Green" && color != "All") {
pm.execution.skipRequest();
}
我将使用带有颜色前缀的动物名称的 Animal GET API 总共 8 个请求 它包括 4 个黄色请求、3 个绿色请求和 1 个红色请求。
如果设置颜色为黄色,则仅调用 4 个黄色请求。
如果设置颜色为绿色,则仅调用 3 个绿色请求。
如果设置颜色为红色,则仅调用 1 个红色请求。
如果设置颜色为全部,则调用所有 8 个请求。
动物网址
https://freetestapi.com/api/v1/animals?search=[Animal Name]
第一个请求
定义环境变量为“Color”
另存为
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": "Yellow Get 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 color = pm.environment.get('Color');\r",
"console.log(\"run request color: \" + color);\r",
"\r",
"if (color != \"Yellow\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Green Get 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 color = pm.environment.get('Color');\r",
"if (color != \"Green\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Yellow Get 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 color = pm.environment.get('Color');\r",
"if (color != \"Yellow\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Green Get 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 color = pm.environment.get('Color');\r",
"if (color != \"Green\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Yellow Get 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 color = pm.environment.get('Color');\r",
"if (color != \"Yellow\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Green Get 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 color = pm.environment.get('Color');\r",
"if (color != \"Green\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Yellow Get Koala",
"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 color = pm.environment.get('Color');\r",
"if (color != \"Yellow\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": "Red Get Giraffe",
"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 color = pm.environment.get('Color');\r",
"if (color != \"Red\" && color != \"All\") {\r",
" pm.execution.skipRequest();\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": [
""
]
}
}
]
}
仅运行绿色请求
newman run 1-demo.postman_collection.json --env-var "Color=Green"
仅运行黄色请求
newman run 1-demo.postman_collection.json --env-var "Color=Yellow"
运行所有请求
newman run 1-demo.postman_collection.json --env-var "Color=All"