2016-12-28 5 views
0

현재 설정된 값에 대한 응답 값과 일치하는 어설 션 스크립트가 있습니다. 아래 참조 :SoapUI 어설 션으로 양쪽에서 0.05 이내의 필드 값을 일치시킵니다.

// get the xml response            
def response = messageExchange.getResponseContent()             
// parse it            
def xml = new XmlSlurper().parseText(response)            
// find your node by name            
def node = xml.'**'.find { it.name() == 'total-premium' }            
// assert            
assert node.toString().matches("(0|27.11|0)\\d*"), 'Expected Result: 0 or 27.11 or 0 Actual Result: ' + node  

내가 원하는 것은 0.05 이하의 값 사이에서 일치시키는 것입니다. 그래서이 특정 스크립트의 경우, total-premium 값이 27.06과 27.16 사이의 값이면 어디에나 true라는 주장이 필요합니다.

어설 션 코드는 total-premium 필드에있는 숫자 값을 matches("(0|27.11|0)\\d*")의 세 값과 일치시킵니다.

그러나, 나 대신이 11 개 값 total-premium을 입력하면 I 필드 total-premium의 값이 내가 수동으로 스크립트에 입력 0.05 플러스 또는 마이너스 값 경우에도 통과 라인 assert node.toString().matches("(0|27.11|0)\\d*"), 'Expected Result: 0 or 27.11 or 0 Actual Result: ' + node을 할 수 있습니다. 이 예에서는 27.11입니다.

간략한 설명을 위해 ~ 1000 개의 테스트 케이스가 있으며 Excel을 사용하여 각 테스트 케이스에 대한 코드 및 어설 션을 작성한 다음 SoapUI로 가져옵니다. 따라서 Excel 알고리즘 입력 값에 따라 자동으로 스크립트 일치가 발생합니다.

+0

입력 내용과 주장 내용을 표시 할 수 있습니까? 지금은 분명하지 않습니다. – Rao

답변

1

JUnitpublic static void assertEquals(double expected, double actual, double delta)을 사용할 수 있습니다.

import org.junit.Assert 
// ... your code goes here ... 
// new assert 
if(node.toDouble() != 0.0) 
    Assert.assertEquals(27.11, node.toDouble(), 0.05) 
+0

코드를 추가하고이 오류가 발생했습니다. 메서드의 서명이 없습니다. static java.lang.Double.parseDouble()은 인수 유형에 적용됩니다. (groovy.util.slurpersupport.NodeChild) 값 : [35.7] 가능한 해결책 : parseDouble (java .lang.String)' – Ross

+0

@Ross는'.toDouble()'만 사용할 수있는 것처럼 보입니다. 제 수정을 참조하십시오. – SiKing

+0

대단히 감사합니다. – Ross