【问题标题】:Postman - how to use "responseBody.has" with environment variables?邮递员 - 如何将“responseBody.has”与环境变量一起使用?
【发布时间】:2017-08-11 14:54:32
【问题描述】:

我正在尝试实现以下场景:

在 GET 请求中,我使用 JSON.stringify 为请求的响应设置环境变量。

在另一个 GET 请求中,我试图验证创建的环境变量是否存在于 JSON 响应中。但是,此响应返回的结果不仅仅是来自上一个请求的结果。

这就是为什么我需要“搜索”响应并尝试找到与环境变量 1:1 匹配的部分。

我正在尝试(例如)以下测试:

var test = postman.getEnvironmentVariable("testvariable")
tests["test1"] = JSON.stringify(responseBody.has(test));

这似乎总是有效,即使我手动更改环境变量的内容,测试仍然通过。如果我删除 JSON.stringify 那么它总是会失败。

我应该如何进行?

【问题讨论】:

  • 您是否尝试过解析 responseBody 并检查响应中的特定键值对。
  • 是的,我有。然而,这些元素以随机方式显示,我不知道它们将是特定 JSON 数组的哪一部分。这就是为什么我需要搜索整个身体。

标签: json variables testing postman


【解决方案1】:

您可以使用 lodash 库中的 isEqual
示例:
在您的测试脚本中,您可以将 fromEnv 替换为环境变量中的对象,并将 fromBody 替换为您的响应字符串

var fromEnv = {"key1": "value1", "key3": "value3", "key2":{"child1":"childValue"}};//environment["envObj"];
var fromBody = {"key2":{"child1":"childValue"}, "key1": "value1", "key3": "value3"};// object from parsed JSON body

tests["objects are equal"] = _.isEqual(fromEnv, fromBody)

【讨论】:

    【解决方案2】:
    //Get the variable value
    var testVar= pm.environment.get("testvariable");
    
    //Validate whether entire response value as a text contains the variable value. 
    pm.test("Validate if response contains variable.", function () {
         pm.expect(pm.response.text()).to.include(testVar);
    });
    

    【讨论】:

    • 请花一些时间解释一下代码的含义以及为什么您的答案回答了这个特定问题。
    猜你喜欢
    • 2020-11-06
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2015-01-15
    • 2021-01-05
    • 2020-10-29
    相关资源
    最近更新 更多