小编Pét*_*agy的帖子

邮递员 - 无法在集合级别预请求脚本中运行 pm.sendRequest()

我在 travis 中构建后使用 newman 运行 api 测试。

我试图限制预请求脚本的重复,因此检查了一些关于如何在集合级别拥有预请求脚本的解决方法。

我的问题是我不想在每个请求上运行它们,而只想在我需要它们的地方运行它们。

示例:我尝试运行登录脚本以在专用端点上使用返回的令牌。

我的代码如下所示:

集合级别预请求脚本定义:

    Object.prototype.login = function() {
        const request = {
            url: 'somthing',
            method: 'GET',
            header: 'Content-Type:application/json',
            body: {
              mode: 'application/json',
              raw: JSON.stringify(
                {
                  email: pm.environment.get('someenv'),
                  password: pm.environment.get('someenv')
                })
            }
        };

        pm.sendRequest(request, function (err, res) {
            var response = res.json();
            pm.environment.set("token", response.token);
        });
    }
Run Code Online (Sandbox Code Playgroud)

请求级别预请求脚本定义:

    _.login();
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决为什么我不能在此范围内运行 pm.sendRequest 吗?

pm.environment.get('someenv')就像一个魅力,所以我不知道在这里做什么。

当从集合级别预请求脚本调用而不使用对象时,它运行良好,但如果我只是将整个请求放在那里,它将在我首先想要避免的每个请求之前运行。

我尝试使用 console.log() 记录一些内容,但似乎 pm.sendRequest() 中的回调从未运行。

postman postman-pre-request-script

8
推荐指数
1
解决办法
7294
查看次数