我有下一个问题:我在工作和家用电脑上有相同的环境,但我内部有不同的数据库记录。
因此,对于本地环境中的测试请求,我经常需要更改测试值。
Postman有不同的变量范围(见documentation)
在我的情况下,收集范围是保存的生产变量。在环境范围上,我通过本地配置重写此值。
SITE_DOMAIN - https://www.prod.com/
USER_ID - 1234567890
SITE_DOMAIN - https://dev.loc/
USER_ID - 123
在家里,我有相同的域名,但是另一个用户ID,每当我想在家里运行请求时,我需要在环境变量中更改它。
我想将 USER_ID 设置为仅在本地本地计算机上的其他值。
是否可以使用本地机器范围重写变量?有本地层,但在文档中没有描述。
答案 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 值设置为主页或办公室取决于我们现在的位置。
如果我们不想每次都为每台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