如何使用 soap ui 测试休息请求和响应是否相同?

How to test rest request and response are same using soap ui?

我有以下创建员工的请求

{
  "name": "abc",
  "dept": "mech",
  "dob": "20-Feb-1994"
}

我得到了相同的回复,另外还有一个员工的 ID。 我正在为

等所有属性编写断言以响应
"name":"${CreateEmp#Request#$.name}"

是否有任何简单的方法可以测试以下条件?

  1. 请求和响应相同(用于更新)
  2. 请求和响应相同,除了 id(用于创建)

根据评论编辑:

{  
   "empid":"4187",
   "deptId":"4",
   "branchId":"6",
   "firstName":"Prabhu",
   "lastName":"S",
   "emailAddress":"prabhus@gmail.com",
   "contactNumber":"987654321",
   "isEnabled":"Y",
   "dob":"02/05/1994",
   "doj":"03/04/2016",
   "fatherName":"XXXX",
   "motherName":"YYYY",
   "activationCode":"ssp",
   "spouseName":"ZZZZ",
   "address":"MMMMMM",
   "pincode":"123456",
   "district":"16",
   "dateCreated":"2017-02-21T13:00:24.317Z",
   "dateModified":"2017-02-21T13:00:24.317Z",
   "status":"0"
}

这是 groovy 脚本,它根据请求值

进行响应比较

Groovy 脚本: 将此用作请求步骤的 Script Assertion,以便它可以动态处理任何请求和响应,而不是固定的json.

//Provide the keys to be ignored
def ignoreKeys = ['empid', 'dateCreated', 'dateModified']

def jsonRequest = context.rawRequest
def jsonResponse = context.response

def reqParsed = new groovy.json.JsonSlurper().parseText(jsonRequest)
def resParsed = new groovy.json.JsonSlurper().parseText(jsonResponse)

def sb = new StringBuffer()
reqParsed.keySet().each { key ->   
   if (!ignoreKeys.contains(key)) {
      reqParsed."$key" == resParsed."$key" ?: sb.append("${key} value does not match; request[${reqParsed."$key"}], response[${resParsed."$key"}]\n")

   }
}
if(sb.toString()) {
   throw new Error("There are differences between the request values and response values. Details below:\n${sb.toString()}")
}

在这里您可以使用您提供的固定样本快速在线Demo试用

输出:使用不同的值来证明断言有效