设置和说明:
共有2个测试类:1. HomepageTest&SignIntest
这些测试类下的方法具有组和优先级 **目标是使用组运行这些测试 Scebario1:当我使用Threadcount = 1时;
以下是行为:
1.1。执行时,它会启动首页>执行Hometest的优先级1>然后启动
然后执行SignIntest的priority1
此后,它将执行HomepageTest的priority2和SigninTest的priority2,依此类推。
1.2。执行完成后,它将关闭1个浏览器(主页),但无法关闭另一个浏览器(SigninPage)
方案2:当我使用threadcount = 2时:
行为: 2.1。它会同时打开2个浏览器。在一个浏览器中,它会启动URL(等待10秒),而在另一浏览器中,它不会启动任何URL(在整个测试过程中保持空白)
2.2:执行与上述1.1相同 执行少量测试后,另一个第三浏览器启动。.执行后,该第三浏览器关闭
完成但剩余2个浏览器(BlankBrowser和带有URL的Brwser)保持打开状态
2.3执行完成后,它将关闭1个浏览器,但无法关闭没有启动URL的浏览器
问题1:为什么执行不是基于组的。它在1.1中提到的优先级基础上运行,看起来不正确。
理想情况下,它应该执行testClass1的Group1&2 然后应该关闭该浏览器,然后启动第二个浏览器并运行Group1&2测试,然后关闭该浏览器
问题2:为什么无法关闭1浏览器。我使用窗口句柄对活动窗口进行计数,计数返回1,而应为2
问题3:当线程计数= 2时,为什么它启动空白浏览器(如2.1中所述)
答案 0 :(得分:0)
我认为您在混合使用组和优先级,并且尝试使用错误的工具来实现目标。而且您还有一些可能在一个线程环境中工作的额外代码,但由于并行环境本质上是异步的,因此无法在并行环境中工作。
答案1:
答案2:
答案3:
以供将来参考:TestNG或SeleniumWebDriver不会出现这种不稳定的行为,也不会两者结合在一起。这是所有质量检查工程师使用的最常见的测试工具组合。我的公司有线程数= 16的并行测试,并且它们都能正常工作。
请记住,测试代码应针对并行性进行优化,您不能只运行针对同步环境设计的常规旧测试。