如何在线程之间添加等待时间,如果我们尝试并行运行testNG类

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

我有一个testNG XML文件,其中我希望与线程计数= 4并行运行我的测试类。但我想在这些线程之间添加一些等待时间,因此4个浏览器实例不会同时打开。所有实例之间需要等待时间。有没有办法做到这一点?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" thread-count="2" parallel="classes">
<test name="Invoice and Expenses">
<classes>
<class name="test one" />
<class name="test two" />
<class name="test three" />
<class name="test four" /> 
</classes>
</test> 
selenium automated-tests testng
2个回答
0
投票

如果您不希望4个类同时打开浏览器,您可能不希望它们并行运行,那么您需要按顺序运行它们。

即使您在每个测试类之前添加了一些随机睡眠,因为它们仍然并行运行,您无法避免它们在启动后同时打开浏览器。

如果你确实希望4个类并行运行,我想只需要在测试类中的某些时刻使用浏览器,而不是总是需要通过测试。在这种情况下,它是测试代码中的资源争用问题。您需要管理资源上的同步锁(例如WebDriver),其中4个类需要打开浏览器,因此要求浏览器的类需要等待其他测试类释放它(关闭它)才可以继续,而其他人也被阻止等待释放。


0
投票

为什么不简单地使用Thread.sleep()

您可以将它放在@BeforeClass方法中,以便在每个类之前执行。此外,如果您想要针对不同类别进行单独延迟,您可以执行以下操作:

    @BeforeClass(alwaysRun = true)
    public void justDelay() throws InterruptedException 
      {

        if(this.getClass().getName().equals("test one"))
         {
           Thread.sleep(delay1);
         }


        else if(this.getClass().getName().equals("test two"))
         {
               Thread.sleep(delay2);
         }

        else
         {
               Thread.sleep(defaultdelay)
         }

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