0

我们的项目中有一种情况,我们需要在不同的 Api 测试用例中访问相同的方法。目前我们已经在每个 Api 测试用例中复制粘贴了所有这些方法。是否可以将这些方法制成一个通用方法并从中访问?

可以将这些方法存储在全局变量中。它在 Postman 中可以正常工作,但在 Newman 中运行时会失败。

4

1 回答 1

3

有两种方法可以解决这个问题——它们都是“hacky”,我的意思是它们是 Postman 允许你为其他目的做的事情的副产品。

  1. 创建一个函数并将其分配给窗口对象的变量 - Postman 项目的 GitHub 线程之一中有一个示例。引用:

我发现一个骇人听闻的解决方法是将要在全局对象中跨测试共享的函数包装起来。在您的第一个预请求脚本中,它看起来像这样:

// window.{name of wrapper}

window.Utils = {

    percentChange: function(val1, val2) {

        return (((val1 - val2) / val2) * 100).toFixed(2) + '%';

    }

};

在您可以调用该函数之后运行的所有测试中,无需在其前面放置“窗口”

Utils.percentChange(responseTime, newTime);

我实际上无法让它工作,而且它对我的情况不可行,因为我想创建一个只定义一次然后在任何请求中可用的框架。

  1. 一位博主 - 抱歉,我现在找不到原始博客文章 - 提出了一种我最终成功使用的方法。编辑:官方 Postman 博客上的一篇博文(提示 #5:重用代码)展示了几乎完全正确的解决方案。

    2.1 创建可重用代码,然后将其存储为环境或全局变量。

    2.2 在您的预请求或测试脚本中,调用eval您在上一步中定义的变量。

注意:这两种方法都有一个主要问题 - 调试问题或更改您存储的可重用代码。当我需要确定可重用代码的不一致行为来自何处时,我为此苦苦挣扎。基本上,我最终使用了很多 console.log。

于 2017-03-12T23:16:53.480 回答