Detaillierte Erläuterung datengesteuerter Beispiele mit XML als Datenquelle in Java und TestNG
Die Funktion von TestNG ist sehr leistungsfähig. Sie können @Dataprovider verwenden, um als Datenfahrer verwendet zu werden. Die Datenquellendatei kann Excel, XML, YAML oder sogar TXT -Text sein. Nehmen Sie XML hier als Beispiel:
Hinweis: Der Rückgabewerttyp von @DataProvider kann nur Objekt [] [] und Iterator <Object> [] sein
Testdata.xml:
<? <Taste> 4 </button> </testMethod4> </data>
Verwenden Sie DOM4J, um XML, Parserxml.java -Datei zu analysieren:
Paket 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; org.dom4j.io.saxreader; public class parserxml {public list Parser3xml (String -Dateiname) {Datei inputxml = new Datei (Dateiname); Listlist = new ArrayList (); int count = 1; Saxreader Saxreader = neuer Saxreader (); try {document document = saxreader.read (inputxml); Element Employees = document.getRootelement (); für (iterator i = Mitarbeiter Map map = new HashMap (); MAP TEMPMAP = new HashMap (); für (Iterator j = Mitarbeiter.Elementiterator (); J.HasNext ();) {Element node = (Element) J.Next (); tempmap.put (node.getName (), node.getText ()); } map.put (Mitarbeiter.getName (), tempMap); list.add (map); }} catch (documentException e) {System.out.println (e.getMessage ()); } Rückgabeliste; }}Anschließend wird die Parsenliste in Objekt [] [] Daten konvertiert und in @Dataprovider kombiniert.
TestData.java -Datei:
Paket com.test; import java.io.file; import Java.lang.reflect.method; import Java.util.arrayList; import Java.util.hashMap; Import Java.util.Inator; import Java.util.List; Java.util.util.map; privat {AngytaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaTaNo. Liste l; public testData () {this.getXMldata (); } public void getXmldata () {parserxml p = new Parserxml (); L = P.PARSER3XML (neue Datei ("src/com/test/testData.xml"). getAbsolutepath ()); } @Dataprovider public Object [] [] ProviDerTeThod (Methode Methode) {list <map <String, String >> result = new ArrayList <map <String, String >> (); für (int i = 0; i <l.size (); i ++) {map m = (map) l.get (i); if (m.containsKey (method.getName ()) {map <string, string> dm = (map <string>) m.get (methode.getName ()); result.add (dm); }} Object [] [] Dateien = neues Objekt [result.size ()] []; für (int i = 0; i <result.size (); i ++) {Dateien [i] = new Object [] {result.get (i)}; } Rückgabedateien; }}Testen Sie dann die Testdatei:
TestDataprovider.java -Datei:
Paket com.test; import java.util.map; import org.testng.Annotations. } @Test (dataProvider = "proviDerMethod") public void testMethod2 (map <?,?> Param) {System.out.println ("method2 empfangen:"+param.get ("input")); } @Test (dataProvider = "proviDerMethod") public void testMethod3 (map <?,?> Param) {System.out.println ("method3 empfangen:"+param.get ("input")); } @Test public void testMethod4 () {System.out.println ("method4 empfangen: 4"); }}Gehen wir zurück und analysieren die XML -Datei. Es gibt zwei TestMethod1 -Knoten, TestMethod2-, TestMethod3- und TestMethod4 -Knoten. In der Datei testDataprovider.java werden vier Testfunktionen definiert: testMethod1, testMethod2, testMethod3 und testMethod4. TestMethod4 verwendet nicht dataprovider, daher sollte das Endergebnis sein, dass TestMethod1 zweimal, testMethod2, testMethod3 und testMethod4 einmal ausgeführt werden, und das Ergebnis lautet wie folgt:
Methode1 empfangen: 1Method1 empfangen: 3Method2 empfangen: 3Method3 empfangen: 3Method4 empfangen: 4passed: testMethod1 ({input = 1, button = 2}) bestanden: testMethod1 ({Eingabe = 3, Button = 4}) bestanden: testMethod2 ({Input = 3, Taste = 4}.) testmethod4================================================================================ ==================================================================================ieben Mit anderen Worten, auf diese Weise müssen Sie zuerst nur die Testfunktion schreiben und dann die Daten in der XML -Datei definieren, und Sie können steuern, ob die Funktion ausgeführt wird, die Anzahl der Läufe und die Daten, die ausgeführt werden.
Ok, lass es uns versuchen ...
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!