有没有办法在不同的 ec2 实例中并行 运行 测试用例(例如 运行 三台 AWS 机器上的一组 90 个用例)
Is there a way to run test cases in parallel in different ec2 instances(eg. Run set of 90 cases across three AWS machines)
使用 testng 工厂和数据提供程序注释,我们有一组需要使用 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。
所以,上面的代码在单机中指向了运行。所以,现在有一种方法可以让所有三台已经设置好执行测试用例的网格机器中的 selenium 网格 运行。由于线程维护是内部管理的,可以这样做吗?
当然可以。但这取决于集线器。
节点必须能够成功注册到集线器。
请注意,您的 selenium 代码仅针对集线器而不是节点和集线器,然后根据您设置的功能决定他们需要重定向到谁。
例如,如果您的 sanity_01 具有 chrome 的功能,并且当您定位到中心时,中心会理解该功能并重定向您的代码到注册 chrome
的节点 machine/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 节点添加到集线器然后它将根据节点可用性重定向到任何人
使用 testng 工厂和数据提供程序注释,我们有一组需要使用 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。 所以,上面的代码在单机中指向了运行。所以,现在有一种方法可以让所有三台已经设置好执行测试用例的网格机器中的 selenium 网格 运行。由于线程维护是内部管理的,可以这样做吗?
当然可以。但这取决于集线器。 节点必须能够成功注册到集线器。
请注意,您的 selenium 代码仅针对集线器而不是节点和集线器,然后根据您设置的功能决定他们需要重定向到谁。
例如,如果您的 sanity_01 具有 chrome 的功能,并且当您定位到中心时,中心会理解该功能并重定向您的代码到注册 chrome
的节点 machine/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 节点添加到集线器然后它将根据节点可用性重定向到任何人