【问题标题】:External library in PostmanPostman 中的外部库
【发布时间】:2015-09-18 09:35:28
【问题描述】:

我想将linq.js 用于我的断言。有没有办法在 Postman 中包含一个外部库?

【问题讨论】:

标签: javascript postman


【解决方案1】:

不,linq.jsPostman Sandbox 中不可用的任何库都不能在 Postman 中使用(默认情况下,有一种解决方法)。

编辑

实际上,如果您在请求中获取脚本并eval,则可以在 Postman 中使用它。此博客文章中给出了一个示例 - http://blog.getpostman.com/2015/09/29/writing-a-behaviour-driven-api-testing-environment-within-postman/

【讨论】:

  • 有没有办法在postman中创建一个通用函数?我有一段代码在我的许多测试脚本中使用了很多
  • 我认为这值得一个单独的问题。但是如果你应用 elssar 所说的,你可以创建一个带有一组函数定义的全局变量,并在测试开始时对它们进行评估。
  • 从 postman 版本 >=5.4.1 开始,您不仅可以在测试级别定义脚本,还可以在文件夹级别和集合级别定义脚本;这些脚本在每次执行集合中定义的子文件夹或子测试之前执行。这是重复使用多次相同代码的好方法
【解决方案2】:

我做的和@grinderX19 差不多。

我运行一次来​​加载我的全局变量:

postman.setGlobalVariable("myUtils", function myUtils() {
let utils = {};

utils.function1= function function1(Arg1, Arg2){
    <code>
};

utils.function2= function function2(Arg1, Arg2){
    <code>
};

return utils;
} + '; myUtils();'
);

然后,我在 Postman 请求中这样称呼它:

//import the global variable
let utils = eval(globals.myUtils);

//Call a function contained by this global variable
var var1 = utils.function1(arg1, arg2);

希望这会有所帮助。

【讨论】:

  • 您是如何将函数存储在 javascript 对象中的?上面的代码没有语法错误但是util是一个空对象
  • 第一个块是放入“全局变量”(= 存储函数的 javascript 对象)的代码。第二个块是放入邮递员请求的代码(预请求和/或测试脚本)。当您 eval() 全局变量时,它将在本地请求的脚本变量中加载其代码。然后你就可以从这个局部变量中得到各种功能了。
【解决方案3】:

自 2015 年以来,Postman 的 bugtracker 中有一个开放功能:Loading External JS Files #1180,但他们似乎并没有在积极开发它。

同时,我使用one of the comments 中提到的解决方法,将最小化的自定义 JS 放入全局变量中,并将其加载到我使用此代码的每个脚本的开头:

eval(postman.getGlobalVariable("environment variable key"));

【讨论】:

  • 从 postman 版本 >=5.4.1 开始,您不仅可以在测试级别定义脚本,还可以在文件夹级别和集合级别定义脚本;这些脚本在每次执行集合中定义的子文件夹或子测试之前执行。这是重复使用多次相同代码的好方法
【解决方案4】:

我在https://postman-quick-reference-guide.readthedocs.io/en/latest/libraries.html#custom-libraries找到了解决方案

pm.sendRequest("https://example.com/your-script.js", (error, response) => {
    if (error || response.code !== 200) {
        pm.expect.fail('Could not load external library');
    }

    eval(response.text());

    // YOUR CODE HERE
});

使用jalali-moment的示例:

pm.sendRequest("https://unpkg.com/jalali-moment/dist/jalali-moment.browser.js", (error, response) => {
    if (error || response.code !== 200) {
        pm.expect.fail('Could not load external library');
    eval(response.text());
    var currentTime=moment().locale('fa').format('YYYYMMDDHHmmss');
    console.log(currentTime);
});

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 2014-02-08
    相关资源
    最近更新 更多