2017-02-21 52 views
1

我有以下请求创建员工如何使用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":"[email protected]", 
    "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" 
} 
+0

可能显示原始样本响应。 – Rao

+0

你加了什么样的断言?以上是否有效? – Rao

+0

是的,上面的一个成功工作。为此我得到3-4个属性。我可以像上面那样做断言。但是我为其他json对象获得了20个以上的属性。所以我需要的是有任何简单的方法来测试请求和响应是否相同。 – Prabhu

回答

2

这里是常规对请求值做出响应比较的脚本

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与您所提供的固定样本尝试。

输出:使用了不同的值,以domonstrate断言作品

​​