Java 및 Testng의 데이터 소스로 XML을 사용하는 데이터 중심 예제에 대한 자세한 설명
TestNG의 기능은 매우 강력합니다. @dataprovider를 사용하여 데이터 드라이버로 사용될 수 있습니다. 데이터 소스 파일은 Excel, XML, Yaml 또는 TXT 텍스트 일 수 있습니다. 여기에서 XML을 예로 들어보십시오.
참고 : @DataProvider의 리턴 값 유형은 Object [] [] 및 ITERATOR <BORVER> [] 일 수 있습니다.
testdata.xml :
<? xml version = "1.0"alcoding = "utf-8"?> <data> <testmethod1> <input> </input> <button> 2 </button> </testmethod1> <testmethod1> <input> 3 </input> </button> </testmethod> <testmethod> </input> </input> </input> <tesmethod2> </testmethod> <button> 4 </button> </testmethod4> </data>
dom4j를 사용하여 xml, parserxml.java 파일을 구문 분석하십시오.
패키지 com.test; import java.io.file; import java.util.arraylist; import java.util.hashmap; import java.util.iterator; import java.util.list; import java.util.map; import org.dom4j.document; import org.dom4j.docmentection; import org.dom4j.docmentection; org.dom4j.io.saxreader; public class parserxml {public list parser3xml (string filename) {file inputxml = new File (filename); 목록 목록 = new ArrayList (); int count = 1; SaxReader SaxReader = New SaxReader (); {document document = saxReader.Read (inputxml); 요소 직원 = document.getRootElement (); for (iterator i = EmployE.ElementIterator (); i.HasNext ();) {요소 Employee = (요소) i.next (); 지도 맵 = new Hashmap (); map tempmap = new Hashmap (); for (iterator j = Employee.elementiterator (); tempMap.put (node.getName (), node.getText ()); } map.put (Employee.getName (), TempMap); list.add (지도); }} catch (DocumentException e) {System.out.println (e.getMessage ()); } 반환 목록; }}그런 다음 구문 분석 목록이 객체 [] [] 데이터로 변환되고 @Dataprovider에서 결합됩니다.
TestData.java 파일 :
패키지 com.test; import java.io.file; import java.lang.reflect.method; import java.util.arraylist; import java.util.hashmap; import java.util.iterator; import java.util.list; import java.util.map; public classng. 개인 목록 L; public testdata () {this.getxmldata (); } public void getxmldata () {parserxml p = new parserxml (); l = p.parser3xml (새 파일 ( "src/com/test/testdata.xml"). getAbsolutepath ()); } @dataprovider public Object [] [] ProviderMETHOD (메소드 메소드) {list <map <String, String >> result = new ArrayList <map <String, String >> (); for (int i = 0; i <l.size (); i ++) {map m = (map) l.get (i); if (m.containskey (method.getName ())) {map <string, String> dm = (map <String, String>) m.get (method.getName ()); result.add (dm); }} Object [] [] files = 새 개체 [result.size ()] []; for (int i = 0; i <result.size (); i ++) {files [i] = new Object [] {result.get (i)}; } 반환 파일; }}그런 다음 테스트 파일을 테스트하십시오.
TestDataprovider.java 파일 :
패키지 com.test; import java.util.map; import org.testng.annotations.*; public class testdataprovider extends testdata {@test (dataprovider = "providermethod") public void testmethod1 (map <?> param) {system.out.println ( "method1 ("+param.get ( ")); } @test (dataProvider = "ProviderMETHOD") public void testMethod2 (map <?,?> param) {System.out.println ( "method2 수신 :"+param.get ( "input")); } @test (dataProvider = "ProviderMETHOD") public void testMethod3 (map <?,?> param) {System.out.println ( "method3 reque :"+param.get ( "input")); } @test public void testmethod4 () {system.out.println ( "method4 leadment : 4"); }}돌아가서 XML 파일을 분석합시다. TestMethod2, TestMethod3 및 TestMethod4 노드의 두 가지 testmethod1 노드가 있습니다. TestDataprovider.java 파일에서 TestMethod1, TestMethod2, TestMethod3 및 TestMethod4의 4 가지 테스트 기능이 정의됩니다. TestMethod4는 DataProvider를 사용하지 않으므로 최종 결과는 TestMethod1이 두 번 실행되고 TestMethod2, TestMethod3 및 TestMethod4가 한 번 실행되며 결과는 다음과 같습니다.
수신 : 3method2 수신 : 3method3 수신 : 3Method3 수신 : 3Method4 수신 : 4Passed : 4Passed : testMetHod1 ({input = 1, button = 2})가 통과 : testMethod1 ({input = 3, button = 4}) 통과 : testMethod2 ({input = 3, button = 4}) 통과 : testmethod : the Testmethod : 버튼 = 4}) 통과 : TestMethod4 =========================================================================================================================================== ================================================================================================================================ 다시 말해, 이런 식으로, 먼저 테스트 함수를 작성한 다음 XML 파일에서 데이터를 정의하면 기능이 실행되는지, 실행 수 및 실행되는 데이터를 제어 할 수 있습니다.
좋아, 시도해 보자 ...
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!