2016-05-15 7 views
3

Ich versuche Webdriver parallele Ausführung mit Webdriver Hub und TestNG Parallel Mechanismus einzurichten. Ich habe ein Problem mit ThreadProblem mit paralleler Ausführung mit Selenium Grid für Webdriver + TestNG

Ich habe diese Klasse, die TestBaseSetUp erweitert, die eine BeforeMethod und AfterMethod hat und auf die immer ausgeführt wird. Für die parallele Ausführung von Webdrivers wollte ich ThreadLocal verwenden, aber @Test und @ Before/@ After befinden sich in verschiedenen Threads. Wenn ich Webdriver als ThreadLocal in meinem TestBaseSetUp einstelle und versuche, meine Testmethode zu erhalten, gibt es null zurück.

public class TestCheck extends TestBaseSetUp { 
    @Test 
    public void test(){ 
      System.out.println("Thread in test " + Thread.currentThread().getId()); 

} }

Haben wir eine Möglichkeit haben, so dass @Test auch in demselben Thread wie @ Vorher/@ Nach Methode

Antwort

0

@Manish_pat

einen Blick auf diesen Blog-Post von mir nehmen: https://rationaleemotions.wordpress.com/2013/07/31/parallel-webdriver-executions-using-testng/ Die Idee ist weg für Web-Treiber Instanziierung, sich auf Config-Methoden zu bewegen in ein TestNG-Listener-gesteuertes Modell, bei dem das Webdriver-Objekt innerhalb von beforeInvocation() erstellt und in afterInvocation() zerstört wird. TestNG garantiert, dass beforeInvocation(), @Test und afterInvocation() immer für denselben Thread ausgeführt werden. So, jetzt können Sie weitermachen und mit ThreadLocal hier arbeiten.

+0

Danke für Ihre Antwort. Ich werde den Link überprüfen, aber ich wundere mich in diesem Fall, wie ich mit BeforeMethod und AfterMethod usw. arbeiten würde. Anders als Test Annotation, würde ich alle diese tollen Features von testNG verlassen müssen, da sie nicht im selben Thread wie Test sind. Irgendein Vorschlag für diese. –

+0

Wenn das, was ich vorgeschlagen habe, gut für Sie funktioniert, bitte helfen Sie, die Antwort zu akzeptieren. Um deine Frage zu beantworten, denke ich nicht, dass BeforeMethod, Test, AfterMethod auf verschiedenen Threads laufen. Ich habe auf Ihre Anfrage im Google-Forum mit einer Probe auch geantwortet. https://groups.google.com/d/msg/testng-users/8XYt-El2_JU/o5Mm6gklAQAJ –

0

tat, ist versucht,

@Test(singleThreaded=true) 

Bei Klassenstufe. damit alle Testmethoden in dieser Klasse auf demselben Thread ausgeführt werden. here ist Beispiel

danken Ihnen, Murali

+0

Danke Murali für die Antwort. Aber ich frage mich, wie dies das Problem lösen wird. Mein Problem ist, wenn ich in meinem TestBaseSetUp BeforeMethod den ThreadLocal-Treiber erstellte und versuche, es in Testmethode zu verwenden, aber da sich BeforeMethod- und Testmethoden nicht in demselben Thread befinden, funktioniert es nicht. –

+0

hmm ... etwas verwirrt. Sehen Sie, ob Sie obige Annotation verwenden, alle Testmethoden in der Klasse werden von demselben Thread wie in doc ausgeführt, wenn ich nicht falsch liege. Verwenden Sie daher die normale Methode in der TestBaseSetUp-Klasse, um einen Thread zu erstellen, und rufen Sie diesen Thread in Ihrer Klasse unter "BeforeTest" auf. So wird in der Klasse "BeforeTest", "Test" usw. denselben Thread verwenden. –

Verwandte Themen