【问题标题】:Selenium grid, tests start starting on the same thread when run in parallelSelenium 网格,测试在并行运行时从同一个线程开始
【发布时间】:2015-12-31 01:27:37
【问题描述】:

使用 Selenium 网格和 TestNg 运行并行测试,@BeforeTest 方法似乎在同一个线程上启动两个测试,有什么想法吗?我试图确保每个测试类都在自己的线程上开始。

@BeforeTest(alwaysRun = true)
@Parameters({ "selenium.OS", "selenium.browser","selenium.testClassNameHere" })
public void beforeTest(String OS, String browser, String testClassNameHere) {
    Out.trace("Starting beforeTest for "+testClassNameHere+" on thread:  " + Thread.currentThread().hashCode());
    //create driver here
    Out.trace("beforeTest has finished");
}

但是,这里有日志,显示两个测试类在同一个线程上启动,并且只创建了两个驱动程序,这给监听器和报告带来了各种各样的麻烦。

TRACE: Starting beforeTest for AcceptanceTests.ErrorReportingTests on thread:  777376239
TRACE: Starting beforeTest for AcceptanceTests.PopupTests on thread:  777376239
TRACE: Starting beforeTest for AcceptanceTests.LoginPageTests on thread:  1235740568
TRACE: Finished making driver.
TRACE: Finished making driver.
TRACE: beforeTest has finished
TRACE: beforeTest has finished

这是显示三个测试类的 ANT xml 文件...

<?xml version="1.0"?>
<suite name="Debugging QA Tests" parallel="tests" thread-count="10">
   <test name="Popup Tests" preserve-order="true" >
        <parameter name="selenium.OS" value="localhost" />
        <parameter name="selenium.browser" value="chrome" />
        <parameter name="selenium.testClassNameHere" value="AcceptanceTests.PopupTests" />
        <classes>
            <class name="qaautomation.AcceptanceTests.PopupTests" />
        </classes>
    </test>
  <test name="Login Page Tests" preserve-order="true">
        <parameter name="selenium.OS" value="localhost" />
        <parameter name="selenium.browser" value="chrome" />
        <parameter name="selenium.testClassNameHere" value="AcceptanceTests.LoginPageTests" />
        <classes>
            <class name="qaautomation.AcceptanceTests.LoginPageTests" />
        </classes>
    </test>
    <test name="Error Reporting Tests" preserve-order="true">
        <parameter name="selenium.OS" value="localhost" />
        <parameter name="selenium.browser" value="chrome" />
       <parameter name="selenium.testClassNameHere" value="AcceptanceTests.ErrorReportingTests" />
         <classes>
            <class name="qaautomation.AcceptanceTests.ErrorReportingTests" />
        </classes>
    </test>
</suite> 

【问题讨论】:

    标签: java multithreading selenium ant testng


    【解决方案1】:

    您在哪个类中定义了beforeTest 方法。 我创建了相同的结构,以下代码在不同的线程上为我工作。

    public class TestCase {
    
        @BeforeTest(alwaysRun = true)
        @Parameters({ "selenium.OS", "selenium.browser","selenium.testClassNameHere" })
        public void beforeTest(String OS, String browser, String testClassNameHere) {
            System.out.println("Starting beforeTest for "+testClassNameHere+" on thread:  " + Thread.currentThread().hashCode());
            //create driver here
            System.out.println("beforeTest has finished");
        }
    }
    
    public class PopupTests extends TestCase{
    
        @Test(description="popup reporting")
        public void teszt()
        {
            System.out.println("popup");
        }
    }
    public class ErrorReportingTests extends TestCase{
    
        @Test(description="error reporting")
        public void teszt()
        {
            System.out.println("Error");
        }
    }
    
    public class LoginPageTests extends TestCase {
    
        @Test(description="login reporting")
        public void teszt()
        {
            System.out.println("Login");
        }
    }
    

    并且我使用了与您给出的相同的 testng xml 配置文件,以下是我的输出。

    Starting beforeTest for AcceptanceTests.ErrorReportingTests on thread:  1968879864
    beforeTest has finished
    Starting beforeTest for AcceptanceTests.LoginPageTests on thread:  88161428
    beforeTest has finished
    Starting beforeTest for AcceptanceTests.PopupTests on thread:  1040963230
    beforeTest has finished
    Login
    popup
    Error
    

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      相关资源
      最近更新 更多