2017-07-19 3 views
0

Ich habe eine testng.xml, die mehrere Test-Tags enthält und jedes Test-Tag hat zwei Klassen. Momentan gibt es 10-12 Testfälle, also gibt es 10-12 Test-Tags, aber in Zukunft könnte diese Zahl auf 50+ steigen, dann wird die testng.xml sehr schwer. Gibt es eine Möglichkeit, die Codezeile zu verkleinern?Gibt es eine Möglichkeit, mehrere Test-Tags in testng.xml durch etwas anderes zu ersetzen

Die VerifySuite der zweiten Klasse hat eine @Test Annotation und kann nicht geändert werden, da sie aus einem Jar kommt.

Unten ist die xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="Suite"> 
    <listeners> 
     <listener class-name="com.api.reporting.ExtentReporterNG" /> 
    </listeners> 
    <test name="GET TC001_TC002"> 
     <classes> 
      <class name="com.test.scenarios.TC001_TC002" /> 
      <class name="com.test.api.verification.VerifySuite" /> 
     </classes> 
    </test> 
    <test name="GET TC003_TC004"> 
     <classes> 
      <class name="com.test.scenarios.TC003_TC004" /> 
      <class name="com.test.api.verification.VerifySuite" /> 
     </classes> 
    </test> 
    <test name="GET TC005_TC006"> 
     <classes> 
      <class name="com.test.scenarios.TC005_T006" /> 
      <class name="com.test.api.verification.VerifySuite" /> 
     </classes> 
    </test> 
    <test name="GET TC007"> 
     <classes> 
      <class name="com.test.scenarios.TC007" /> 
      <class name="com.test.api.verification.VerifySuite" /> 
     </classes> 
    </test> 
    <test name="POST TC001_TC002"> 
     <classes> 
      <class name="com.test.scenarios.TC001_TC002" /> 
      <class name="com.test.api.verification.VerifySuite" /> 
     </classes> 
    </test> 
</suite> <!-- Suite --> 

Antwort

1

Ja Sie diese leicht TestNG mit recht machen kann. Hier ist, wie

  1. Stellen Sie sicher, dass die neueste freigegebene Version von TestNG nämlich verwenden., 6.11
  2. Legen Sie eine Implementierung des TestNG Zuhörer nämlich., org.testng.IAlterSuiteListener wobei innerhalb der org.testng.IAlterSuiteListener#alter() Methode, starten Sie im Grunde die XmlTest Objekte erstellen via Code und dann in das Objekt XmlSuite injizieren.

Sie sogar ein wenig Phantasie dazu bekommen können, wobei Sie Ihre alter() Methode eine Datenquelle haben kann, wie beispielsweise eine Excel-Tabelle oder einer CSV-Datei oder eine JSON-Datei, die den Namen des <test>-Tag und dem Set enthält zehren von Testklassen, die in das Tag eingeschlossen werden sollen, und diese Listener müssen die gesamte Suite-XML-Datei programmatisch weben.

In Ihrer testng.xml Suite XML-Datei, werden Sie nur den <listeners> Tag angeben und einen Verweis auf die IAlterSuiteListener Implementierung hinzufügen, die Sie gebaut.

Das sollte Ihnen helfen, das zu tun, wonach Sie suchen.

+0

Das war wirklich hilfreich. Danke vielmals. – user3939741

+0

Können Sie bitte meine Antwort akzeptieren, wenn es geholfen hat? –

Verwandte Themen