有没有办法在不同的ec2实例中并行运行测试用例(例如,在三台AWS机器上运行一组90个案例)

斯里拉姆

使用testng factory和Data provider批注,我们有一组需要使用Selenium网格并行执行的测试用例。到目前为止,我们已经说了例如三个具有所需IP的AWS实例。目前,我们能够在单个AWS实例中并行运行一组案例。即能够在单个实例中并行运行一组30个案例。

<?xml version="1.0"?>
<suite name="reg_tests" parallel="tests" thread-count="90">
    <test name="sanity_01" parallel="instances" thread-count="30">
        <classes>
            <class name="com.X.Y"/>
        </classes>
    </test>
    <test name="sanity_02" parallel="instances" thread-count="30">
        <classes>
            <class name="com.X.Y1"/>
        </classes>
    </test>
    <test name="sanity_03" parallel="instances" thread-count="30">
        <classes>
            <class name="com.X.Y2"/>
        </classes>
    </test>
</suite>

在要获取要运行的机器的IP的属性文件中,该文件显然指向单个AWS机器。

  WebDriver driver = new RemoteWebDriver(new URL(url), 
  desiredCapabilities);

url-AWS计算机的IP。因此,以上代码指导在单台计算机上运行。因此,现在有一种方法可以要求硒网格在已经设置用于执行测试用例的所有三台Grid计算机中运行。由于线程维护是在内部管理的,可以这样做吗?

Shubham Jain

当然是。但这取决于集线器。该节点必须能够成功注册到集线器。

请注意,您的硒代码仅以集线器为目标,而不是节点和集线器,然后根据您设置的功能决定将其重定向到谁。

例如,如果您的sanity_01具有chrome的功能,并且当您定位到集线器时,集线器就会了解其功能并将代码重定向到已注册chrome的节点机器/ ec2

     baseURL = "http://demo.xyz.com/test/";
     hubURL = "http://192.168.43.223:4444/wd/hub";
     DesiredCapabilities capability = DesiredCapabilities.chrome();
     capability.setBrowserName("chrome");
     capability.setPlatform(Platform.WIN10);
     driver = new RemoteWebDriver(new URL(hubURL), capability);

在上面的代码中,集线器为,hubURL = "http://192.168.43.223:4444/wd/hub";并且将功能设置为chrome,它将将其发送到chrome节点。如果将2个Chrome节点添加到集线器,则它将根据该节点的可用性重定向到任何人

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章