根据数据文件的输入提取特定请求

问题描述 投票:0回答:1

我有一个集合下的请求列表。我想根据通过数据文件传递的输入运行特定请求。

例如:

如果请求名称为 TC-1、TC-2、TC-3、TC-4...我只想根据数据文件中的输入运行 TC-2 和 TC-3。我将保留我的数据文件为 csv 格式并将我的所有输入保留在行中(如图所示]

Requests under Collection File Data file

谁能提供解决方案吗

提前致谢

postman newman
1个回答
0
投票

只能从数据文件(环境 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\"]"

结果

  • 注意 我直接从 CSV 文件尝试,但没有成功。
© www.soinside.com 2019 - 2024. All rights reserved.