2016-03-24 28 views
1

Ich habe ein TestNG-Testverfahren, die mit mehreren Parametern laufen unter Verwendung eines Datenproviders:TestNG Datenanbieter parallel Parameter nicht in Code Anmerkung

@DataProvider() 
public Object[][] scenarios() {...} 

@Test(dataProvider = "scenarios") 
public void check(...) {...} 

Manchmal mag ich die check Tests parallel und manchmal nicht laufen. Ich kann das kontrollieren, indem ich die Code-Annotation auf @DataProvider(parallel = true) oder @DataProvider(parallel = false) setze, aber ich möchte das als Laufzeitparameter tun, nicht als Einstellung im Code.

Wie kann ich festlegen, ob ein Datenprovider mehrere Threads entweder als Befehlszeilenargument oder als Attribut in der XML-Datei der TestNG-Suite generiert?

Antwort

0

Sie können versuchen, ITestContext an den Datenanbieter zu übergeben und z. Gruppen von test ('singleTest' oder 'parallelTest'). Da im Datenprovider nur ein Objekt für die singleTest-Gruppe zurückgegeben wird, sollte es ausreichen.

2

Annotation Transformers sind, was Sie suchen. Mit ihnen können Sie den Wert parallel in Abhängigkeit von Ihrer eigenen Geschäftsregel (zum Beispiel: ein env var) ändern.

+0

Das scheint zu funktionieren, habe nicht versucht, aber große Ziegen, das ist ein seltsamer Meta-Hack für etwas, das eine einfache Eigenschaft sein sollte –

+0

Wenn Sie es für alle Test-Kampagne wollen, können Sie verwenden, Daten-Provider- thread-count' Attribut auf 'suite' Knoten von' testng.xml'. – juherr