空手道 - 比较不同响应的整数值

问题描述 投票:0回答:1

我有 2 个回复:

response1 = {a: 1, b: "1"}
response2 = {a: 2, b: "2"}

我想比较数字/整数值,例如:

Then assert (response1.a + 1) == response2.a

希望这是可能的。但如何呢? 我需要两种数据类型的解决方案,以防参数值为字符串或数字/整数。

我尝试了2种方法,但没有成功:

  1. Then assert response1.a < response2.a
  2. Then assert response1.a+1 == response2.a

实际代码:

   Scenario: Validate openCase count
        * def preResponse = call read('@CaseCount')
        * def createCaseResponse = karate.callSingle('CreateCase.feature@Create');
        * def postResponse = call read('@CaseCount')
        Then assert preResponse.responseData.openCases < postResponse.responseData.openCases

实际反应:

{
        "responseData": {
            "openCases": 1,
            "closedCases": 0,
            "inProgressCases": 0,
            "onHoldCases": 0,
            "invalidCases": 0,
            "overDueCases": 0,
            "dueTodayCases": 0
        },
        "resultInfo": {
            "resultCodeId": "200",
            "resultCode": "SUCCESS",
            "resultStatus": "SUCCESS",
            "resultMsg": "S"
        },
        "message": "SUCCESS"
    }
javascript testing automation karate
1个回答
0
投票

方法有很多,这里是一个:

* match response2 == { a: '#(response1.a + 1)', b: "#((response1.a + 1) + '')" }

创建临时变量可能会更容易:

* def a1 = response1.a
* match response2.a  == a1 + 1

类型转换请参考:https://github.com/karatelabs/karate#type-conversion

就我个人而言 - 我强烈反对这种“聪明”的测试。好的测试应该准确地知道预期的内容,并且您只需检查一个“硬编码”JSON。更多解释请参见:https://stackoverflow.com/a/54126724/143475

© www.soinside.com 2019 - 2024. All rights reserved.