从邮递员导出的测试在纽曼失败

时间:2018-12-04 13:20:00

标签: postman newman

我们从Postman导出了一组测试(使用带有测试的json文件和带有环境变量的单独json文件),尝试像 newman run tests.json -e environment.json 一样运行设置:输出令人困惑:

┌─────────────────────────┬──────────┬──────────┐
│                         │ executed │   failed │
├─────────────────────────┼──────────┼──────────┤
│              iterations │        1 │        0 │
├─────────────────────────┼──────────┼──────────┤
│                requests │       12 │        6 │
├─────────────────────────┼──────────┼──────────┤
│            test-scripts │        6 │        0 │
├─────────────────────────┼──────────┼──────────┤
│      prerequest-scripts │        0 │        0 │
├─────────────────────────┼──────────┼──────────┤
│              assertions │       28 │        0 │
├─────────────────────────┴──────────┴──────────┤
│ total run duration: 819ms                     │
├───────────────────────────────────────────────┤
│ total data received: 9.8KB (approx)           │
├───────────────────────────────────────────────┤
│ average response time: 156ms                  │
└───────────────────────────────────────────────┘

通过的断言数量(28)表明所有测试都可以。但是...实际上集合中只有6个请求,因此请求似乎执行了两次,并且其中一个执行失败,原因是未以某种方式扩展变量。...

这是输出显示的内容(6次): 1.错误的无效URI“ http:///%7B%7Bendpoint%7D%7D/products/4
     根据要求在“”内

因此,这意味着这些请求中不会填写环境变量。

tests.json文件的片段如下:

 {
    "name": "AppStore BackEnd BAKERY_PRODUCT 4 test",
    "event": [
    {
       "listen": "test",
       "script": {
         "id": "0e074806-1248-4446-865d-9e0f3d733ba2", "exec":[
           "pm.sendRequest(\"http://{{endpoint}}/products/4\", function (err, response) {",
                                                    "    ",
                                                    "    pm.test(\"Status code is 200\", function () {",
                                                    "        pm.response.to.have.status(200);",
                                                    "    });",
                                                    "    ",
                                                    "});"
                                            ],
                                            "type": "text/javascript"
                                    }
                            }
                    ],
                    "request": {
                            "method": "GET",
                            "header": [],
                            "body": {
                                    "mode": "raw",
                                    "raw": ""
                            },
                            "url": {
                                    "raw": "http://{{endpoint}}/products/4",
                                    "protocol": "http",
                                    "host": [
                                            "{{endpoint}}"
                                    ],
                                    "path": [
                                            "products",
                                            "4"
                                    ]
                            }
                    },
                    "response": []
            },

任何线索?

1 个答案:

答案 0 :(得分:0)

在您的Tests标签中尝试一下,然后导出收藏集:

pm.sendRequest(`${pm.environment.get('endpoint')}/products/4`, (err, response) => {
    pm.test("Status code is 200", () => {
        pm.response.to.have.status(200)
    })
})

在该标签中使用{{endpoint}}不知道要引用什么。您只能以这种方式在URL,URL参数,标头,授权,请求正文和标头预设上使用它们。

https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables#accessing-variables-in-the-request-builder