2

我有以下测试步骤:

  • 获取详细信息
  • transferObject(财产转移)
  • 变更详情

GetDetails 输出一个 JSON 对象,如下所示:

{
   "databaseId": 123,
   "databaseName": "Test",
   "address": "ON",
   "details":    {
        "detail_id": 999,
        "userId": 2,
        "date": null,
        "state": "active"
    },
   "itemName": "Bob details",
}

transferObject将此details对象传输到ChangeDetails测试步骤。

但是现在我想在将对象提供给 ChangeDetails 测试用例之前修改对象(state属性更改为)。non-active

我怎样才能做到这一点?有什么建议么?

4

1 回答 1

2

我不确定如何使用属性转移步骤来实现这一点,因为它似乎是数据操作。

如果可以实现,我会以下面的方式(使用脚本断言)执行此操作。

只有两步

  • 获取详细信息
  • 变更详情

为获取详细信息步骤添加Script Assertion以下代码:

import groovy.json.*

//Read the response of GetDetails and filter details
def details = new JsonSlurper().parseText(context.response).details

//assert there is details available and not empty
assert details, "Details is empty or null in the response"

//Creating object to build the next step request
def json = new JsonBuilder()

//Building details object for Change
json.details {

  //looping thru each data
    details.each { key, value ->

      //Change state to inactive
      if ('state' == key) value = 'non-active'

      //add the properties inside details
      "$key"("$value")
    }
}

//Create a pretty print sting and this is going to be the next test step's request
def prettyJson = JsonOutput.prettyPrint(json.toString())

//Assign this data to a test step custom property, say REQUEST
context.testCase.setPropertyValue('REQUEST', prettyJson)

在 Change Details 步骤中,打开 request editor => have${#TestCase#REQUEST}

现在运行您的测试,看看它是否按您的需要工作。

注意:它在评论中提到inactive,但在问题中提到non-active- 所以在回复中保持不变。我认为在这种情况下这没什么大不了的,我相信。

于 2016-06-15T19:25:08.043 回答