2016-12-30 67 views
0

我从查询数据库怎样断言,一个节点值与另一个节点值相关联

<Results> 
    <ResultSet fetchSize="128"> 
     <Row rowNumber="1"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Fraud Identity Validation (NegMatch)</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>3</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="2"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Age Verification</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>6</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="3"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Address Validation</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>2</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="4"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Card Limit Validation</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>4</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="5"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Customer Identity Validation (CIP)</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>5</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>3</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Failed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.503</CREATEDATE> 
     </Row> 
     <Row rowNumber="6"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Out Of Wallet Quiz</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>11</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>4</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Skipped</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.613</CREATEDATE> 
     </Row> 
     <Row rowNumber="7"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>OFAC</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>7</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.613</CREATEDATE> 
     </Row> 
    </ResultSet> 
</Results> 

如何在Groovy断言,一个节点值相关联或绑定到另一个节点的值下面的XML 。因此,例如,我想验证来自WORKFLOWACTIVITY节点的“客户身份验证(CIP)”值是否与WORKFLOWACTIVITYSTATUS节点的值“Failed”相关联。我不,如果这一块完全肯定:

</Row> 
<Row rowNumber="5"> 
<REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
<WORKFLOWACTIVITY>Customer Identity Validation (CIP)</WORKFLOWACTIVITY> 
<WORKFLOWACTIVITYKEY>5</WORKFLOWACTIVITYKEY> 
<WORKFLOWACTIVITYSTATUSKEY>3</WORKFLOWACTIVITYSTATUSKEY> 
<WORKFLOWACTIVITYSTATUS>Failed</WORKFLOWACTIVITYSTATUS> 
<WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
<WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
<WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
<WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
<CREATEDATE>2016-12-29 15:29:25.503</CREATEDATE> 
</Row> 

总会回来的第5行

+0

是'客户身份验证(CIP)'的'WORKFLOWACTIVITYSTATUS'总是'Failed'?顺便说一下,如果删除更多条目或条目,则可以更改行号。 – Rao

+0

@Rao:对于我测试的这个特定场景...是的,工作流活动的WORKFLOWACTIVITYSTATUS应该总是失败。 –

回答

1

看起来你正在使用上述jdbc步以上结果基于SoapUI
您可以使用下面的Script Assertion进行相同的测试步骤。

脚本断言

//Check if the result is not empty 
assert context.result 

//Closure to get the sibling element data 
def getSiblingData = { data, elementName, elementValue, siblingName -> 
    def parsedResult = new XmlSlurper().parseText(data) 
    (parsedResult.'**'.findAll {it.name() == elementName && it.text()== elementValue }*.parent()."$siblingName").inject([]) { result, item -> result << item.text(); result } 
} 

//Assert the result 
//Note that data is passed to getSiblingData closure 
assert ['Customer Identity Validation (CIP)'] == getSiblingData(context.response, 'WORKFLOWACTIVITYSTATUS', 'Failed', 'WORKFLOWACTIVITY') 

如果你只想standalone groovy script

def results = """<Results> 
    <ResultSet fetchSize="128"> 
     <Row rowNumber="1"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Fraud Identity Validation (NegMatch)</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>3</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="2"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Age Verification</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>6</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="3"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Address Validation</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>2</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="4"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Card Limit Validation</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>4</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.3</CREATEDATE> 
     </Row> 
     <Row rowNumber="5"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Customer Identity Validation (CIP)</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>5</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>3</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Failed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.503</CREATEDATE> 
     </Row> 
     <Row rowNumber="6"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>Out Of Wallet Quiz</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>11</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>4</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Skipped</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.613</CREATEDATE> 
     </Row> 
     <Row rowNumber="7"> 
     <REGISTRATIONKEY>1644606</REGISTRATIONKEY> 
     <WORKFLOWACTIVITY>OFAC</WORKFLOWACTIVITY> 
     <WORKFLOWACTIVITYKEY>7</WORKFLOWACTIVITYKEY> 
     <WORKFLOWACTIVITYSTATUSKEY>2</WORKFLOWACTIVITYSTATUSKEY> 
     <WORKFLOWACTIVITYSTATUS>Passed</WORKFLOWACTIVITYSTATUS> 
     <WORKFLOWPROCESSKEY>1</WORKFLOWPROCESSKEY> 
     <WORKFLOWPROCESSSTATUSKEY>1</WORKFLOWPROCESSSTATUSKEY> 
     <WORKFLOWPROCESS>CardAccountRegistration</WORKFLOWPROCESS> 
     <WORKFLOWPROCESSSTATUS>Started</WORKFLOWPROCESSSTATUS> 
     <CREATEDATE>2016-12-29 15:29:25.613</CREATEDATE> 
     </Row> 
    </ResultSet> 
</Results>""" 

def getSiblingData = { data, elementName, elementValue, siblingName -> 
    def parsedResult = new XmlSlurper().parseText(data) 
    (parsedResult.'**'.findAll {it.name() == elementName && it.text()== elementValue }*.parent()."$siblingName").inject([]) { result, item -> result << item.text(); result } 
} 

assert ['Customer Identity Validation (CIP)'] == getSiblingData(results, 'WORKFLOWACTIVITYSTATUS', 'Failed', 'WORKFLOWACTIVITY') 
+0

谢谢。这工作! –

相关问题