C#Selenium-并行执行测试

时间:2018-08-07 09:18:10

标签: c# selenium nunit

我想并行执行多个测试,这是一些代码。我正在使用Post方法,但是这种方法不起作用,有人可以帮助我吗?

namespace BusinessLayer.BusinessLogic.UI
{
    [TestFixture]
    [Parallelizable]
    public class nunitlayer : BaseLayer
    {
        [Test]
        public static void test1(IWebDriver driver, WebDriverWait wait, int urlTypeId)
            {
                LoginLayer.LoginTest(driver, wait, urlTypeId);
            }
            [Test]
            public static void test2(IWebDriver driver, WebDriverWait wait, int urlTypeId)
            {
                LoginLayer.ArmenianLoginTest(driver, wait, urlTypeId);
            }
        }
 }



case (int)TestType.nunit:
                        nunitlayer.test1(chrome.driver, chrome.wait, urlTypeId);
                        break;

1 个答案:

答案 0 :(得分:0)

您在测试治具类[Parallelizable]上有nunitlayer。这意味着它将与也具有[Parallelizable]的其他灯具并行运行。

如果希望nunitlayer中的测试彼此并行运行,则应执行以下操作之一:

  1. [Parallelizable]放在每个测试上,而不是放在夹具上...

    namespace BusinessLayer.BusinessLogic.UI
    {
        [TestFixture]
        public class nunitlayer : BaseLayer
        {
            [Parallelizable]
            [Test]
            public static void test1(IWebDriver driver, WebDriverWait wait, int urlTypeId)
            {
                LoginLayer.LoginTest(driver, wait, urlTypeId);
            }
    
            [Test]
            [Parallelizable]
            public static void test2(IWebDriver driver, WebDriverWait wait, int urlTypeId)
            {
                LoginLayer.ArmenianLoginTest(driver, wait, urlTypeId);
            }
        }
     }
    
  2. [Parallelizable(ParallelScope.Children)]放在灯具上...

    namespace BusinessLayer.BusinessLogic.UI
    {
        [TestFixture]
        [Parallelizable(ParallelScope.Children)]
        public class nunitlayer : BaseLayer
        {
            [Test]
            public static void test1(IWebDriver driver, WebDriverWait wait, int urlTypeId)
            {
                LoginLayer.LoginTest(driver, wait, urlTypeId);
            }
    
            [Test]
            public static void test2(IWebDriver driver, WebDriverWait wait, int urlTypeId)
            {
                LoginLayer.ArmenianLoginTest(driver, wait, urlTypeId);
            }
        }
    }
    

这两种方法都可以使测试并行运行,但是不能保证它们可以正常运行。您尚未显示测试方法参数的数据来自何处。您显示了一个case语句,其中似乎调用了nunit测试,但这不是正常运行NUnit测试的方式,并且我们不知道每个测试是否都(例如)获得了唯一的驱动程序。 IOW,还有很多其他地方可能出错,我怀疑您尚未共享有关如何运行测试的许多信息。