postmannewman

Pickup specific request based on input from data file


I am having list of request under a collection.I want to run a particular request based on input which is being passed via data file.

For Example:

If name of requests will be TC-1,TC-2,TC-3,TC-4...I want to run only TC-2 and TC-3 based on inputs from my data file.I will keep my data file as csv format and will keep my all inputs in row(As mentioned in image]

Requests under Collection File Data file

Can anyone provide a solution

Thanks in advance


Solution

  • It is possible only selected request from data file (environment JSON).

    In the Pre-request-script tap, can skip request by this function.

    pm.execution.skipRequest();
    

    Also environment variables can assign only run items.

    So this logic can handle

    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");
    }
    

    enter image description here

    Environment variable

    enter image description here

    Demo Collection

    I want to run only TC-2 and TC-3 among 8 Requests

    Request mane should be includes TC-[number]

    It can flexible, like [TC-1],[TC-1] name, TC-1, TC-1 name possible.

    enter image description here

    Save as 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": [
                        ""
                    ]
                }
            }
        ]
    }
    

    Save as 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"
    }
    

    Run it by newman

    From environment file

    newman run 1-demo.postman_collection.json -e demo.postman_environment.json
    

    Result

    enter image description here

    From variable value

    run only TC-2 and TC-5

    newman run 1-demo.postman_collection.json --env-var "testCaseIDs=[\"TC-2\",\"TC-5\"]"
    

    Result

    enter image description here