本地机器环境变量

时间:2018-04-05 22:15:11

标签: postman

我有下一个问题:我在工作和家用电脑上有相同的环境,但我内部有不同的数据库记录。
因此,对于本地环境中的测试请求,我经常需要更改测试值。

Postman有不同的变量范围(见documentation

在我的情况下,收集范围是保存的生产变量。在环境范围上,我通过本地配置重写此值。

集合变量

SITE_DOMAIN - https://www.prod.com/
USER_ID - 1234567890

环境变量

SITE_DOMAIN - https://dev.loc/
USER_ID - 123

在家里,我有相同的域名,但是另一个用户ID,每当我想在家里运行请求时,我需要在环境变量中更改它。

我想将 USER_ID 设置为仅在本地本地计算机上的其他值。

enter image description here Recorded interface example

是否可以使用本地机器范围重写变量?有本地层,但在文档中没有描述。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题:

您可以在本地环境文件local_dev或其他内容中添加一个值,以运行检查以确定它是否在那里 - 然后在pre-request script中有一些查找该值的逻辑,如果它存在,然后在发出请求之前将USER_ID变量更改为您想要的变量,如果不存在,则不执行任何操作。

粗略地说,有点像这样但更优雅:

if(pm.environment.get('local_dev') === 'some_value') {
    pm.environment.set('USER_ID', 1234)
}

我可能完全误解了这个问题。

答案 1 :(得分:1)

正如我所见,本地变量是我们在pm.variables范围内的请求前脚本部分设置的变量。

因此我们可以通过

覆盖环境值而不改变它
pm.variables.set("VAR_NAME", "VAR_VALUE");

不幸的是,它会在每个发送请求的所有PC上运行。所以我们需要为它添加一些逻辑。

正如@Danny Dainton所假设的,我们可以为开发PC位置添加一些环境变量。

作为一种解决方法,我将变量PC_ENV添加到本地环境中,并在预请求脚本部分中为此添加一些逻辑。

if (pm.environment.get('PC_ENV') === 'home') {
    pm.variables.set("USER_ID", "35");
}

我们如何使用它?当我们开始与Postman合作时,我们会转到我们的环境并将 PC_ENV 值设置为主页办公室取决于我们现在的位置。

Recorded example

如果我们不想每次都为每台PC添加所有局部变量值而不想运行预脚本部分,并且在工作开始时仅按设置所需条件运行一次。

const needSetupEnvironment = true;//change to false when setup is finished
if (needSetupEnvironment) {
    const currentEnvironment = 'home';//setup environment before start work

    let userId;

    switch (currentEnvironment) {
        case 'home':
            userId = 35;
            break;
        default:
            userId = 123;
            break;
    }

    pm.environment.set('USER_ID', userId);
}

我们可以在需要更改环境变量时启用脚本,然后在设置运行一次后使用正确的环境禁用脚本 Recorded example