【问题标题】:How to convert String value into boolean如何将字符串值转换为布尔值
【发布时间】:2018-02-09 23:34:37
【问题描述】:

我在断言之前将字符串值(保存为环境变量)转换为布尔值时遇到问题。

我目前在我的 Postman 测试中有这个:

var regDB_p2018 = pm.environment.get("u_p2018");            
pm.expect(jsonData.premiumTO.particip2018).to.deep.equal(regDB_p2018);

运行后我收到消息:

测试注册用户| AssertionError: 期望 true 等于 'true'

我认为问题在于环境变量 u_p2018 因为它在文件中保存为字符串,但在 JSON 的响应消息中,jsonData.premiumTO.particip2018 的值是布尔值。

我如何在做出断言之前将u_p2018 的值转换为布尔值?

其他信息

在第一个请求中,我将script_1 中的以下值设置为初始值:

pm.environment.set("u_p2018", true);
pm.environment.set("u_p2020", false);

然后我在第二个Request中注册POST请求:

 {
    "personId": 0,
    "name": "Sample",
    "email": "sample@gmail.com",
    "account": {

        "userName": "sample@gmail.com",
        "rejectMessage": "",
        "admin": false
    },
    "premiumTO": {
        "name": "Bbthvn",

        "particip2018": true,
        "particip2020": false,
        "address": {
            "addressId": 0,
            "country": "U.S.A",
            "city": "NY",
        },
        "photo": null,
        "quoteVerified": false
    }
}

然后在收到响应消息后的第二个请求的script_2 中,我进行以下检查:

var var_regDB_p2018 = pm.environment.get("u_p2018");
var var_regDB_p2020 = pm.environment.get("u_p2020");

pm.expect(jsonData.premiumTO.particip2018).to.deep.equal(var_regDB_p2018);
pm.expect(jsonData.premiumTO.particip2020).to.deep.equal(var_regDB_p2020);

【问题讨论】:

  • 到目前为止你尝试过什么?你做了什么研究?显示你在问题中做了什么。显示jsonData.premiumTO.particip2018 的值是什么,甚至更好地发布响应数据。您需要更多地扩展您的问题并添加更多详细信息 - stackoverflow.com/help/how-to-ask
  • 我在主字段中发布,因为它没有被接受为评论。部分附加信息:希望它有所帮助。
  • 如果您在任何时候有其他信息来扩展问题,您应该将其作为更新添加到该信息中,而不是在 cmets 中。

标签: postman


【解决方案1】:

如果您所做的只是将值设置为true,您是否需要将其设置为环境变量?

pm.test("Equal to true", () => {
    pm.expect(pm.response.json().myValue).to.equal(true);
});

所以在你的例子中,这可能只是:

pm.expect(jsonData.premiumTO.particip2018).to.equal(true)
pm.expect(jsonData.premiumTO.particip2020).to.equal(false) 

或者

pm.expect(jsonData.premiumTO.particip2018).to.be.true
pm.expect(jsonData.premiumTO.particip2020).to.be.false

尝试更多地理解Chai 断言语法和一些基本的JavaScript 可能会很好。这将清除您在创建支票时会遇到的一些后续问题。

【讨论】:

  • 我在第一个请求中有 2 个请求,我确实初始化了 vars (set),在第二个请求中,我发送了一个注册表单的 POST 消息并从第一个脚本中获取值,所以因为我把它们放在环境变量中。但仍然是相同的: AssertionError: expected true to equal 'u_p2018' in postman doc 我重新认为环境变量将被转换为字符串,因此我需要将它们转换为布尔值。我认为这应该是问题,但我不知道如何
  • 当您这样做pm.environment.set("u_p2018", true); pm.environment.set("u_p2020", false); 时,它不会从任何地方(来自请求)获取真/假值,因为您已经手动添加了它。所以我认为不需要从环境文件中获取值来断言它。
  • 嗨丹尼,很抱歉延迟回答。我必须发送一个注册请求,我想自动化这个。所以我想到了用户必须在注册表单的前端输入的所有信息,将其设置在一个虚拟请求中(例如任何 GET 消息),以便在 prescript 我清除所有变量并在测试脚本中设置一些用户已经输入的值在表格中。 (包括上面的两个布尔变量)。
  • 在下一个请求中,当我想发送 POST 请求以使用用户参数注册 Web 服务时,我将从保存的环境中获取用户参数(在第一个虚拟请求中设置)。并且在对 POST 请求的响应中,我检查数据库中的值是否与用户输入的值匹配 jsonData.premiumTO.particip2018 与用户输入 var "u_p2018" 匹配b>
猜你喜欢
  • 2011-02-17
  • 2012-04-02
  • 2021-02-23
  • 2018-09-07
  • 1970-01-01
  • 2013-01-24
  • 2016-07-13
  • 2011-11-12
相关资源
最近更新 更多