2016-10-20 3 views
1

나는 각 TestStep에 대해 단계가 통과했거나 실패한 날씨를 기록한다는 Groovy Script를 SoapUI에 가지고있다. Groovy Script에 잘못된 내용에 대한 주장 메시지를 기록하고 싶습니다.SoapUI Groovy Script, log.info 테스트 단계 실행에 대한 자세한 정보.

Thu Oct 20 11:31:06 BST 2016:INFO:TestStep_0051 Passed 
Thu Oct 20 11:31:06 BST 2016:INFO:TestStep_0052 FAILED 
Thu Oct 20 11:31:06 BST 2016:INFO:TestStep_0053 Passed 

내가 더 세부 실패한 이유 메시지를 표시 실패한 어설 싶습니다 순간

import com.eviware.soapui.model.testsuite.Assertable.AssertionStatus 

def TestCase = testRunner.getTestCase() 
def StepList = TestCase.getTestStepList() 
StepList.each{ 
    // check that testStep has assertionStatus 
    // (for example groovy testSteps hasn't this property since 
    // there is no asserts on its) 
    if(it.metaClass.hasProperty(it,'assertionStatus')){ 
     if(it.assertionStatus == AssertionStatus.FAILED){ 
      log.info "${it.name} FAILED"  

     }else if(it.assertionStatus == AssertionStatus.VALID){ 
      log.info "${it.name} Passed" 
     }else if(it.assertionStatus == AssertionStatus.UNKNOWN){ 
      log.info "${it.name} UNKNOWN (PROBABLY NOT ALREADY EXECUTED)" 
     } 
    } 
} 

나는이 출력을 얻을. 나는이 그루비 스크립트를 실행할 때

assert node.toString().matches("(0|175.238|0)\\d*")  | |   |  | |   false   | 132.497286826667   132.497286826667 
또한

는, 윈도우 그냥 검정색 배경을 가지고 있으며, 그래서 넓은 내가 찾을 수가 어차피 그 제목은 '정보'팝업 : 그것은 내가 메시지가 TestStep 자체를 실패 그것의 오른쪽. 아무도 이것이 무엇인지 압니까?

답변

2

당신은 당신의 코드를 약간 수정 시도, 내가 설명 할 수 있습니다

대신이 문제를 방지하기 위해, getAssertionList()를 사용하여 testStep에 대한 모든 주장을 액세스 할 수있는 메타 클래스 불구하고 testStep 결과에 대한 액세스 전용 최종 AssertionStatus

표식을 포함하지 않는 testSteps를 사용하면 metaClass를 사용하여이 메서드가 있는지 확인할 수 있습니다.

이 목록의 각 어설 션에 대해 상태를 확인할 수 있으며 실패한 경우 getErrors() 메 서드를 사용하여 오류 메시지를 가져올 수 있습니다.

마지막으로 Groovy가 스크립트 (StepList)의 마지막 인스턴스화 오브젝트를 리턴하고 SOAPUI가 프롬프트하기 때문에 프롬프트 메시지가 표시되지 않도록하려면 return 문을 추가하여 프롬프트 결과를 피하십시오.

import com.eviware.soapui.model.testsuite.Assertable.AssertionStatus 

def TestCase = testRunner.getTestCase() 
def StepList = TestCase.getTestStepList() 
StepList.each{ 

    // check that this kind of testStep 
    // can contain assertions (avoid errors with groovy testSteps) 
    if(it.metaClass.respondsTo(it,"getAssertionList")){ 

     def assertions = it?.getAssertionList() 

     assertions?.each{ assertion -> 

      if(assertion?.getStatus() == AssertionStatus.FAILED){ 
       log.info "${it.name} FAILED" 
       assertion?.getErrors()?.each{ error -> 
       log.info "Error message ${error.getMessage()}" 
       } 
      }else if(assertion?.getStatus() == AssertionStatus.VALID){ 
       log.info "${it.name} Passed" 
      }else if(assertion?.getStatus() == AssertionStatus.UNKNOWN){ 
       log.info "${it.name} UNKNOWN (PROBABLY NOT ALREADY EXECUTED)" 
      } 
     } 
    } 
} 
return 
+0

놀라워요. 감사합니다. – Ross

+0

@Ross 친절하게 도와 드리겠습니다.') – albciff

관련 문제