Selenium Webdriver + TestNG:testNg执行并行执行多个类的不稳定行为

问题描述 投票:0回答:1

设置和说明:

  1. 有2个测试类:1。HomepageTest&SignIntest
  2. 这些测试类下的方法有组和优先级**目标是使用组Scebario1运行这些测试:当我使用Threadcount = 1时;

以下是行为:

1.1。在执行时它启动主页>执行Homepagetest的优先级>然后启动

然后执行SignIntest的priority1

在此之后,它执行HomepageTest的priority2和SigninTest的priority2,依此类推。

1.2。一旦执行完成,它将关闭1个浏览器(主页)但无法关闭另一个浏览器(SigninPage)

场景2:当我使用threadcount = 2时:

行为:2.1。它同时打开2个浏览器在一个浏览器中它启动URL(对于URL等待10秒)但在另一个浏览器中它不会启动任何URL(在整个测试过程中保持空白)

2.2:执行就像上面提到的1.1一样在执行了几个测试后,另一个第三个更加强大的启动...这个第三个浏览器关闭一次执行

完成但剩余的2个浏览器(空白浏览器和带URL的浏览器)仍处于打开状态

2.3执行完成后关闭1个浏览器,但无法关闭没有启动URL的浏览器

Quetion1:为什么执行不在Group的基础上。它基于1.1中提到的优先级运行,看起来不正确。

理想情况下,它应该执行testClass1的Group1和2然后它应该关闭该浏览器然后启动第二个浏览器并运行Group1和2测试然后关闭该浏览器

问题2:为什么它无法关闭1浏览器。我使用窗口句柄计算了活动窗口,计数返回1,而它应该是2

问题3:当thread-count = 2时,为什么它会启动一个空白浏览器(如2.1中所述)

maven selenium-webdriver testng
1个回答
0
投票

我认为你是混合组和优先级,并尝试使用不正确的工具来实现某些目标。并且您有额外的代码可能在一个线程环境中工作,但它不能在并行环境中工作,因为并行环境本质上是异步的。

答案1:

  • 组:仅提供测试方法的分组(按功能,相似性或按功能)。
  • 优先级:只是一个优先级,它是一种排序。 TestNG看到优先级并自动对其进行排序,因为您有2个具有最高优先级的测试,它首先运行它们。
  • 分组用于管理多个测试用例执行,但是按组,假设您只需要运行功能A测试,并且它们都属于A组,因此您运行组A.
  • 在组级别上没有实现排序,因为它没有意义。分组是分组,而不是排序。 (例子:你看到一堆狗,你看它是一群狗,而不是像狗A,狗B,狗C等的某种顺序)
  • 注意:如果在同一个类中的测试之间存在某种依赖关系,则并行运行TestNG将并行运行组,因为它不能并行运行测试。

答案2:

  • 如果浏览器保持打开状态,那是因为您的代码没有关闭它。也许您应该检查打开新实例的次数,以及关闭它的次数。
  • 我怀疑你的第一个场景是你打开了多个浏览器实例,但是你使用相同的WebDriver来管理它,而不是关闭创建的第二个实例。
  • WebDriver不仅会自动弹出一个新的浏览器实例。您需要创建一个实例来使用它。同样,WebDriver不只是自己关闭浏览器实例,您需要用您的代码关闭它。

答案3:

  • 回答2。

供将来参考:TestNG或SeleniumWebDriver没有这种不稳定的行为或事件两者的组合。这是所有QA工程师使用的最常见的测试工具组合。我的公司有线程计数= 16的并行测试,它们都工作正常。

请记住,测试代码应针对并行性进行优化,您不能只运行为同步环境设计的常规旧测试。

© www.soinside.com 2019 - 2024. All rights reserved.