【问题标题】:postman dynamic unset environment variables邮递员动态未设置的环境变量
【发布时间】:2018-12-04 02:30:12
【问题描述】:

有没有办法动态取消设置环境变量? 我想访问环境变量并执行查找和替换/删除操作,以便进行更动态的测试。

例如,假设我想测试用户的创建,我创建了 {{tmp-username}}、{{tmp-email}} 等变量...用其他值替换它们以进行下一次测试和完成后删除它们。

如果我知道如何使用代码访问这些,我会在 tmp 上进行字符串搜索...

提前感谢您的任何回复

为了澄清,这个问题是不同的:Postman: How to delete/clear postman environment variable at run-time 这涉及知道您希望取消设置的 var 的确切名称。我想搜索或遍历变量以删除或编辑它们。

【问题讨论】:

标签: postman postman-collection-runner


【解决方案1】:

您能否使用Tests 选项卡中的函数来遍历变量并在上次测试运行后清除它们?

例如:

function cleanup() {
    const clean = _.keys(pm.environment.toObject())
    _.each(clean, (arrItem) => {
        pm.environment.unset(arrItem)
    })
}
cleanup()

这不会“替换”这些值,但这会让您确信在运行期间设置的值不会再次被使用。

编辑

如果你想清除一组特定的变量,那些你已经给出了特定前缀的变量,你可以使用这个:

function cleanup() {
    const clean = _.keys(pm.environment.toObject())
    _.each(clean, (arrItem) => {
        if (arrItem.startsWith("tmp")) {
            pm.environment.unset(arrItem)
        }
    })
}
cleanup()

如果您想查看所有键和值,您可以使用它来将它们记录到控制台:

_.map(pm.environment.toObject(), (value, key) => console.log(`The key is '${key}' and the value is '${value}'`))

【讨论】:

  • 虽然这绝对是一个有趣的脚本,但它使用了准确的变量名。我希望更动态地访问环境变量。
  • 到目前为止你尝试过什么? - 看起来你只是在等待一个答案。也许尝试使用pm.environment.toObject() 函数中的keys 创建clean 数组值。
  • 我已经更新了我的答案,现在应该更加动态并且基于已设置的变量。
  • 太棒了!这正是我一直在寻找的。我不知道它们可以设置为一个对象。谢谢@丹尼丹顿!我已经通过记录这样的键值来测试它: var env = pm.environment.toObject(); for (var k in env){ if (Object.prototype.hasOwnProperty.call(env,k)) { console.log("Key is " + k + ", value is" + env[k]); } }
  • 您可能会添加一个ifstatement 以仅清除以tmp 等开头的那些。值得只是弄乱它以找到有效的方法。所有 API 参考信息都在这里getpostman.com/docs/v6/postman/scripts/…
猜你喜欢
  • 2019-01-09
  • 2020-04-11
  • 2021-01-05
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
相关资源
最近更新 更多