2015-01-19 3 views
0

우리는 testng xml 파일에 시스템 속성을 직접 추가하려고합니다. 각 테스트 세트마다 다른 xml 파일을 사용하지 않고 Jenkins 작업에서 자동으로 다른 테스트 제품군을 실행하려고합니다. 시스템 속성을 파일에 직접 전달하고 구문 분석 할 수있는 방법이 있습니까?testng XML에 시스템 속성을 추가 하시겠습니까?

<test name="Regression"> 
     <groups> 
      <run> 
       <include name="Test" /> 
      </run> 
     </groups> 

을하고있을 수 있도록하고 싶습니다 : 예를 들어

, 우리는 현재이

<test name="Regression"> 
    <groups> 
     <run> 
      <include name=$TestParameter /> 
     </run> 
    </groups> 

감사합니다 많이!

답변

1

TestNG에는 '변수'를 시스템 속성의 값으로 변환 할 수있는 인터프리터가 없습니다. 이 기능을 직접 추가해야합니다. http://testng.org/doc/documentation-main.html#running-testng-programmatically을 살펴보십시오. 이 작업을 수행 할 수있는 다른 방법이 물론 있습니다

XmlSuite suite = new XmlSuite(); 
suite.setName("TmpSuite"); 

XmlTest test = new XmlTest(suite); 
test.setName("TmpTest"); 
List<XmlClass> classes = new ArrayList<XmlClass>(); 
classes.add(new XmlClass(System.getProperty("TestParameter"))); 
test.setXmlClasses(classes) ; 

List<XmlSuite> suites = new ArrayList<XmlSuite>(); 
suites.add(suite); 
TestNG tng = new TestNG(); 
tng.setXmlSuites(suites); 
tng.run(); 

: 여기에 귀하의 제안을 맞는 예입니다. 더 간단한 방법은 테스트가 시작되기 전에 단순히 XML 파일의 내용을 대체하는 사전 테스트 스크립트를 실행하는 것입니다. 예를 들어 그루비 스크립트를 사용하여 수행합니다.

def file = new File('relativepath/file') 
def xml = file.text 
//println xml 
file.text = xml.replace('$TestParameter',System.getProperty('TestParameter')) 

를 끝내 그 이름의 지역 변수를 사용하는 시도로 그 해석 때문에 $ TestParameter을 정의 할 때 "사용하지 않는 기억