2016-07-07 8 views
0

Ich habe eine testNg-Klasse, wo ich den gleichen Test über einen vollständigen Satz von Daten ausführen muss. Ich könnte jede Datenzeile im @dataprovider bereitstellen, jedoch würde das Ergebnis für jede Datenzeile in der Berichtsdatei angezeigt werden. In meinem Fall muss ich Millionen von Daten testen. Dies würde einen sehr unübersichtlichen Bericht verursachen. Unten ist ein Beispiel.Ist es möglich, einen Test über einen vollständigen Datensatz durchzuführen und den vollständigen Datensatz in @dataprovider zu übergeben und das Ergebnis des Ganzen zu melden?

TestData: Meine Testdaten sind eine Datei mit mehreren JSON-Zeilen, wobei jedes JSON-Objekt einen Namen und einen Beruf haben sollte.

{"name":"Jim", "occupation":"racing"} 
{"name":,} 

My Test NG-Klasse wird wie folgt aussehen:

public class TestJSon { 
    @DataProvider("lineProvider") 
    public Object[][] lineProvider() { 
     // return JSON lines 
    } 

    @Test (dataProvider = "lineProvider") 
    public void testJsonLines(String name, String occupation) { 
     // Test name and occupation 
    } 
} 

die Ausgabe Bericht enthält nun:

testJsonLines für Zeile mit dem Namen Jim bestanden testJsonLines für Zeile fehlgeschlagen { "name ":,} testJsonLines für Zeile {} fehlgeschlagen testJsonLines fehlgeschlagen für Zeile {" name ":" Jack "," Beruf ":"}

ich einen Bericht möchte, wo es einfach gedruckt wird:

testJSON Eingänge für Eingänge in Linien 2,3 und 4

Zusammengefasst gescheitert, ich versuche, meinen Bericht zu machen Gruppiere die Ergebnisse eines Laufs über alle Daten, anstatt sie jeweils zu drucken. Gibt es eine Möglichkeit, dies zu tun?

Antwort

0

Ich hatte ein ähnliches Problem. Wir testen Millionen von Daten - der Ansatz des Datenproviders führt entweder zu einem Fehlspeicherfehler oder der Bericht ist nicht leicht zu sehen.

Ich endete mit meiner eigenen Implementierung von IReporter, die das Ergebnis in ein Excel-Blatt schreibt, das mir erlaubt, Filter zu haben oder irgendeine Anpassung zu machen, die ich will. Natürlich muss dies in Verbindung mit anderen Listenern (ITestListener/IInvokedMethodListener) geschehen, um die Ergebnisse so zu erfassen, wie Sie es wollen.

In meinem Fall benutze ich meine eigene Parallelität auch, um den outofmemory Fehler mit so vielen Daten zu überwinden - ich normalerweise verwendete, um es bei 90000 Testdaten zu treffen.

Verwandte Themen