将环境本地化以便在Postman中进行收集

时间:2018-08-02 13:25:12

标签: postman

我看过有关环境的邮递员文档:

https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables

其中的图像表示环境是集合的本地环境,我没有在邮递员中看到这种情况。

Postman image from doc

我有很多项目,每个项目都有其集合,并且我想为每个项目设置不同的环境URL。但是,我看到所有集合都共享这些环境。如何使环境在集合本地?

谢谢!

3 个答案:

答案 0 :(得分:2)

我在这里找到了同样的问题,并想出了一种方法来伪造它。我的目标是能够轻松导出集合,而无需导出我的整套环境变量(包括其他项目的环境变量)来支持它。

基本上,您要为集合中的每组特定于环境的值创建一个代理变量。

首先,编辑您的集合并使用预请求脚本将环境名称设置为环境变量。我认为可能有一个内置变量,但没有找到。

pm.environment.set("envName", pm.environment.name)

pre-request script screenshot

下一步,在新的集合变量中使用该变量,该变量充当具有环境特定值的匹配变量的代理。或者,您也可以在预请求脚本中创建代理变量。

{{url}} -> {{{{envName}}-url}} -> {{ee-url}} -> your url for ee environment
                               -> {{pr-url}} -> your url for pr environment

collection variables screenshot

最后,您可以照常使用代理变量了。

{{url}}

enter image description here

答案 1 :(得分:0)

您发布的图片实际上定义了变量的解析方式。 您可以使用不同类型的变量。

其中:

  • 全局变量
  • 环境变量
  • 集合变量
  • 局部变量
  • 数据变量

假设您有一个变量“ a”,其值5定义为全局变量。 但是您还有一个 collection变量'a',其值为'7' 因此,在发送请求时,图片将告诉您解析变量的顺序。

全局>收集>环境>本地>数据  -这就是解决的顺序。

所以,将这样完成:

全局变量(a = 5)>集合(a = 7)>环境(a未定义)>本地(a未定义)>数据(a未定义)

因此,通过解决顺序后,最终的'a'值为 7

环境变量可用于工作区中的所有集合 每个环境都特定于工作空间。 全球人也是如此。

如果您只想使用特定于每个集合的变量,则需要使用集合变量

要添加集合变量,只需转到侧边栏,然后将鼠标悬停在要为其添加变量的集合上,然后单击“●●●”

然后单击“编辑”>“变量”>添加只希望特定于此集合的变量。

Postman Edit Collection

现在,在“请求”中,您可以像使用其他变量一样使用这些变量。 例如: https:// {{url}} / get?foo = bar

或在测试脚本中:

console.log(pm.variables.get('car'));  // 'astonMartin'

邮递员将为您完成剩下的工作。

当您具有不同的环境(例如PROD,STAGING,BETA等)时,环境变量会派上用场。许多人都这样使用它们。 否则,它们只是变量,请根据需要使用它。

或者,如果您想将环境用于几个集合,将另一个环境用于另一个。 然后创建多个工作区,并使用相应的环境向其中添加集合。最后,根据需要在这些工作空间之间切换。

答案 2 :(得分:0)

或者干脆放弃 postman 的环境特性,简化只使用 Pre-req 脚本和方法中的 {{URL}},对每个集合重复:

const ENVIRONMENTS = {
    DEV: {
        name: "development", 
        url: "http://localhost:3000"
    }, 
    STAGE : {
        name: "staging", 
        url: "..."
    }, 
    PROD : {
        name: "production", 
        url: "..."
    } 
};
pm.collectionVariables.set("URL", (ENVIRONMENTS.DEV).url);