Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Postman中的参数重复发送API请求_Postman_Postman Collection Runner - Fatal编程技术网

根据Postman中的参数重复发送API请求

根据Postman中的参数重复发送API请求,postman,postman-collection-runner,Postman,Postman Collection Runner,我有一个数据库表,大约有4000条记录(目前)。对API调用(POST,JSON)的响应为我提供此表的数据,每个API调用最多1000条记录。参数“PageNo”定义选择4000条记录中的哪一条(例如,PageNo=1表示记录1-1000)。在我的示例4中,响应的头数据包括一个“PageCount”。我能够检索“PageCount”,下面的测试通过PageNo循环(结果是Postman控制台=1 2 3 4) 如何在循环中重复调用同一请求,并使用PageNo(I)的值作为该请求的参数,如下所示:

我有一个数据库表,大约有4000条记录(目前)。对API调用(POST,JSON)的响应为我提供此表的数据,每个API调用最多1000条记录。参数“PageNo”定义选择4000条记录中的哪一条(例如,PageNo=1表示记录1-1000)。在我的示例4中,响应的头数据包括一个“PageCount”。我能够检索“PageCount”,下面的测试通过PageNo循环(结果是Postman控制台=1 2 3 4)

如何在循环中重复调用同一请求,并使用PageNo(I)的值作为该请求的参数,如下所示:

{{baseUrl}/v1/Units/Search?PageNo={{i}

在我的示例中,我希望请求在PageNo2=1、2、3、4的情况下运行4次

我知道我可以使用CSV文件并在Collection Runner中循环请求,但PageCount会更改(即表中的记录数更改),我需要经常运行此循环,因此为每个循环创建新的CSV文件实际上不是一个选项

邮差测验:

pm.environment.set('Headers2', JSON.stringify(pm.response.headers));
var Headers2 = JSON.stringify(pm.response.headers);

pm.environment.set('PageCount2', JSON.parse(Headers2)[10].value);
var i;
for (i = 1; [i] <= pm.environment.get('PageCount2'); i++) {
    console.log(i);
    postman.setNextRequest('custom fields | json Copy');

}

使用
postman.setNextRequest()
可以将调用请求设置为相同的请求。但您需要一个退出策略,否则该请求将被称为无限次。这仅适用于收集运行程序

{
    "info": {
        "_postman_id": "1d7669a6-a1a1-4d01-a162-f8675e01d1c7",
        "name": "Loop Req Collection",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
        {
            "name": "Run_Req",
            "event": [
                {
                    "listen": "test",
                    "script": {
                        "id": "dac5e805-548b-4bdc-a26e-f56500414208",
                        "exec": [
                            "var iterationCount = pm.environment.get(\"iterationCount\");",
                            "if (pm.environment.get(\"iterationCount\") <= pm.environment.get(\"pageSize\")) {",
                            "    console.log(\"Iteration Number: \" + iterationCount);",
                            "",
                            "    pm.test(\"Status code is 200\", function() {",
                            "        pm.response.to.have.status(200);",
                            "    });",
                            "",
                            "    pm.test(\"Check value of pageNo in body is equal to iterationCount\", function() {",
                            "        var jsonData = pm.response.json();",
                            "        return jsonData.json.PageNo == iterationCount;",
                            "",
                            "    });",
                            "    iterationCount++;",
                            "    pm.environment.set(\"iterationCount\", iterationCount);",
                            "    postman.setNextRequest('Run_Req');",
                            "}",
                            "if (pm.environment.get(\"iterationCount\") > pm.environment.get(\"pageSize\")) {",
                            "    console.log(\"Cleanup\");",
                            "    pm.environment.unset(\"pageSize\");",
                            "    pm.environment.set(\"iterationCount\", 1);",
                            "    postman.setNextRequest('');",
                            "    pm.test(\"Cleanup Success\", function() {",
                            "        if (pm.environment.get(\"pageSize\") == null && pm.environment.get(\"iterationCount\") == null) {",
                            "            return true;",
                            "        }",
                            "    });",
                            "}"
                        ],
                        "type": "text/javascript"
                    }
                },
                {
                    "listen": "prerequest",
                    "script": {
                        "id": "3d43c6c7-4a9b-46cf-bd86-c1823af5a68e",
                        "exec": [
                            "if (pm.environment.get(\"pageSize\") == null) {",
                            "    pm.sendRequest(\"https://postman-echo.com/response-headers?pageSize=4\", function(err, response) {",
                            "        var pageSize = response.headers.get('pageSize');",
                            "        var iterationCount = 1;",
                            "        console.log(\"pre-req:pageSize= \" + pageSize);",
                            "        console.log(\"pre-req:iterationCount= \" + iterationCount);",
                            "        pm.environment.set(\"pageSize\", pageSize);",
                            "        pm.environment.set(\"iterationCount\", iterationCount);",
                            "    });",
                            "",
                            "}"
                        ],
                        "type": "text/javascript"
                    }
                }
            ],
            "request": {
                "method": "POST",
                "header": [
                    {
                        "key": "Content-Type",
                        "name": "Content-Type",
                        "value": "application/json",
                        "type": "text"
                    }
                ],
                "body": {
                    "mode": "raw",
                    "raw": "{\n  \"Location\":\"{{TestingLocation}}\",\n  \"Fields\":[\n    \"StockNo\",\n    \"BrandDesc\"\n    ],\n  \"Filters\": {\n      \"StatusCode\":\"{{TestingUnitSearchStatusCode}}\"\n  },\n  \"PageSize\":1000,\n  \"PageNo\" : \"{{iterationCount}}\"\n}"
                },
                "url": {
                    "raw": "https://postman-echo.com/post",
                    "protocol": "https",
                    "host": [
                        "postman-echo",
                        "com"
                    ],
                    "path": [
                        "post"
                    ]
                }
            },
            "response": []
        }
    ]
}
  • 在第一次(!)请求时,存储页数并创建计数器
  • 递增计数器。如果小于页数,则将当前请求设置为下一个请求
  • 否则,不要设置下一个请求。收集流道将继续正常流动。(可选)删除页面和计数器变量

  • 您可以通过未初始化页数和计数器变量,让请求检测到这是它的第一次迭代。

    使用
    postman.setNextRequest()
    可以将调用请求设置为相同的请求。但您需要一个退出策略,否则该请求将被称为无限次。这仅适用于收集运行程序

    {
        "info": {
            "_postman_id": "1d7669a6-a1a1-4d01-a162-f8675e01d1c7",
            "name": "Loop Req Collection",
            "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
        },
        "item": [
            {
                "name": "Run_Req",
                "event": [
                    {
                        "listen": "test",
                        "script": {
                            "id": "dac5e805-548b-4bdc-a26e-f56500414208",
                            "exec": [
                                "var iterationCount = pm.environment.get(\"iterationCount\");",
                                "if (pm.environment.get(\"iterationCount\") <= pm.environment.get(\"pageSize\")) {",
                                "    console.log(\"Iteration Number: \" + iterationCount);",
                                "",
                                "    pm.test(\"Status code is 200\", function() {",
                                "        pm.response.to.have.status(200);",
                                "    });",
                                "",
                                "    pm.test(\"Check value of pageNo in body is equal to iterationCount\", function() {",
                                "        var jsonData = pm.response.json();",
                                "        return jsonData.json.PageNo == iterationCount;",
                                "",
                                "    });",
                                "    iterationCount++;",
                                "    pm.environment.set(\"iterationCount\", iterationCount);",
                                "    postman.setNextRequest('Run_Req');",
                                "}",
                                "if (pm.environment.get(\"iterationCount\") > pm.environment.get(\"pageSize\")) {",
                                "    console.log(\"Cleanup\");",
                                "    pm.environment.unset(\"pageSize\");",
                                "    pm.environment.set(\"iterationCount\", 1);",
                                "    postman.setNextRequest('');",
                                "    pm.test(\"Cleanup Success\", function() {",
                                "        if (pm.environment.get(\"pageSize\") == null && pm.environment.get(\"iterationCount\") == null) {",
                                "            return true;",
                                "        }",
                                "    });",
                                "}"
                            ],
                            "type": "text/javascript"
                        }
                    },
                    {
                        "listen": "prerequest",
                        "script": {
                            "id": "3d43c6c7-4a9b-46cf-bd86-c1823af5a68e",
                            "exec": [
                                "if (pm.environment.get(\"pageSize\") == null) {",
                                "    pm.sendRequest(\"https://postman-echo.com/response-headers?pageSize=4\", function(err, response) {",
                                "        var pageSize = response.headers.get('pageSize');",
                                "        var iterationCount = 1;",
                                "        console.log(\"pre-req:pageSize= \" + pageSize);",
                                "        console.log(\"pre-req:iterationCount= \" + iterationCount);",
                                "        pm.environment.set(\"pageSize\", pageSize);",
                                "        pm.environment.set(\"iterationCount\", iterationCount);",
                                "    });",
                                "",
                                "}"
                            ],
                            "type": "text/javascript"
                        }
                    }
                ],
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "Content-Type",
                            "name": "Content-Type",
                            "value": "application/json",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\n  \"Location\":\"{{TestingLocation}}\",\n  \"Fields\":[\n    \"StockNo\",\n    \"BrandDesc\"\n    ],\n  \"Filters\": {\n      \"StatusCode\":\"{{TestingUnitSearchStatusCode}}\"\n  },\n  \"PageSize\":1000,\n  \"PageNo\" : \"{{iterationCount}}\"\n}"
                    },
                    "url": {
                        "raw": "https://postman-echo.com/post",
                        "protocol": "https",
                        "host": [
                            "postman-echo",
                            "com"
                        ],
                        "path": [
                            "post"
                        ]
                    }
                },
                "response": []
            }
        ]
    }
    
  • 在第一次(!)请求时,存储页数并创建计数器
  • 递增计数器。如果小于页数,则将当前请求设置为下一个请求
  • 否则,不要设置下一个请求。收集流道将继续正常流动。(可选)删除页面和计数器变量

  • 您可以通过没有初始化页面和计数器变量的数量,让请求检测到这是它的第一次迭代。

    使用postman echo API为您的用例执行POC

  • Pre-req script-->负责对端点的初始请求,以检索PageSize并将其设置为环境变量。还将iterationCount初始化为1(作为环境变量)
  • 测试脚本-->检查当前迭代次数并执行测试
  • 这是一个邮递员收藏。 如果您熟悉纽曼,您可以直接运行:

    newman跑

    您还可以在Postman应用程序中导入此集合并使用collection runner

    {
        "info": {
            "_postman_id": "1d7669a6-a1a1-4d01-a162-f8675e01d1c7",
            "name": "Loop Req Collection",
            "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
        },
        "item": [
            {
                "name": "Run_Req",
                "event": [
                    {
                        "listen": "test",
                        "script": {
                            "id": "dac5e805-548b-4bdc-a26e-f56500414208",
                            "exec": [
                                "var iterationCount = pm.environment.get(\"iterationCount\");",
                                "if (pm.environment.get(\"iterationCount\") <= pm.environment.get(\"pageSize\")) {",
                                "    console.log(\"Iteration Number: \" + iterationCount);",
                                "",
                                "    pm.test(\"Status code is 200\", function() {",
                                "        pm.response.to.have.status(200);",
                                "    });",
                                "",
                                "    pm.test(\"Check value of pageNo in body is equal to iterationCount\", function() {",
                                "        var jsonData = pm.response.json();",
                                "        return jsonData.json.PageNo == iterationCount;",
                                "",
                                "    });",
                                "    iterationCount++;",
                                "    pm.environment.set(\"iterationCount\", iterationCount);",
                                "    postman.setNextRequest('Run_Req');",
                                "}",
                                "if (pm.environment.get(\"iterationCount\") > pm.environment.get(\"pageSize\")) {",
                                "    console.log(\"Cleanup\");",
                                "    pm.environment.unset(\"pageSize\");",
                                "    pm.environment.set(\"iterationCount\", 1);",
                                "    postman.setNextRequest('');",
                                "    pm.test(\"Cleanup Success\", function() {",
                                "        if (pm.environment.get(\"pageSize\") == null && pm.environment.get(\"iterationCount\") == null) {",
                                "            return true;",
                                "        }",
                                "    });",
                                "}"
                            ],
                            "type": "text/javascript"
                        }
                    },
                    {
                        "listen": "prerequest",
                        "script": {
                            "id": "3d43c6c7-4a9b-46cf-bd86-c1823af5a68e",
                            "exec": [
                                "if (pm.environment.get(\"pageSize\") == null) {",
                                "    pm.sendRequest(\"https://postman-echo.com/response-headers?pageSize=4\", function(err, response) {",
                                "        var pageSize = response.headers.get('pageSize');",
                                "        var iterationCount = 1;",
                                "        console.log(\"pre-req:pageSize= \" + pageSize);",
                                "        console.log(\"pre-req:iterationCount= \" + iterationCount);",
                                "        pm.environment.set(\"pageSize\", pageSize);",
                                "        pm.environment.set(\"iterationCount\", iterationCount);",
                                "    });",
                                "",
                                "}"
                            ],
                            "type": "text/javascript"
                        }
                    }
                ],
                "request": {
                    "method": "POST",
                    "header": [
                        {
                            "key": "Content-Type",
                            "name": "Content-Type",
                            "value": "application/json",
                            "type": "text"
                        }
                    ],
                    "body": {
                        "mode": "raw",
                        "raw": "{\n  \"Location\":\"{{TestingLocation}}\",\n  \"Fields\":[\n    \"StockNo\",\n    \"BrandDesc\"\n    ],\n  \"Filters\": {\n      \"StatusCode\":\"{{TestingUnitSearchStatusCode}}\"\n  },\n  \"PageSize\":1000,\n  \"PageNo\" : \"{{iterationCount}}\"\n}"
                    },
                    "url": {
                        "raw": "https://postman-echo.com/post",
                        "protocol": "https",
                        "host": [
                            "postman-echo",
                            "com"
                        ],
                        "path": [
                            "post"
                        ]
                    }
                },
                "response": []
            }
        ]
    }
    
    {
    “信息”:{
    “邮递员id”:“1d7669a6-a1a1-4d01-a162-f8675e01d1c7”,
    “名称”:“循环请求集合”,
    “架构”:https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    “项目”:[
    {
    “名称”:“运行要求”,
    “事件”:[
    {
    “倾听”:“测试”,
    “脚本”:{
    “id”:“dac5e805-548b-4bdc-a26e-F5650414208”,
    “执行官”:[
    “var iterationCount=pm.environment.get(\“iterationCount\”);”,
    “如果(pm.environment.get(\“iterationCount\”)pm.environment.get(\“pageSize\”){”,
    “console.log(\“Cleanup\”);”,
    “pm.environment.unset(\“pageSize\”);”,
    “pm.environment.set(\“iterationCount\”,1);”,
    “邮递员。setNextRequest('');”,
    “pm.test(\'Cleanup Success\',function(){”,
    “如果(pm.environment.get(\“pageSize\”)==null&&pm.environment.get(\“iterationCount\”)==null){”,
    “返回true;”,
    "        }",
    "    });",
    "}"
    ],
    “类型”:“文本/javascript”
    }
    },
    {
    “侦听”:“预请求”,
    “脚本”:{
    “id”:“3d43c6c7-4a9b-46cf-bd86-c1823af5a68e”,
    “执行官”:[
    “如果(pm.environment.get(\“pageSize\”)==null){”,
    “pm.sendRequest(\”https://postman-echo.com/response-headers?pageSize=4\“,函数(错误,响应){”,
    “var pageSize=response.headers.get('pageSize');”,
    “var iterationCount=1;”,
    “console.log(\“pre-req:pageSize=\”+pageSize);”,
    “console.log(\”pre-req:iterationCount=\“+iterationCount);”,
    “pm.environment.set(\'pageSize\',pageSize);”,
    “pm.environment.set(\“iterationCount\”,iterationCount);”,
    "    });",
    "",
    "}"
    ],
    “类型”:“文本/javascript”
    }
    }
    ],
    “请求”:{
    “方法”:“发布”,
    “标题”:[
    {
    “键”:“内容类型”,
    “名称”:“内容类型”,
    “值”:“应用程序/jso”