首页 > 解决方案 > C# Selenium - 并行执行测试

问题描述

我想并行执行多个测试,这是一些代码。我正在使用 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;

标签: c#seleniumnunit

解决方案


你有[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);
            }
        }
    }
    

这两种方法都会使测试并行运行,但不能保证它们会起作用。您还没有显示测试方法参数的数据来自哪里。您展示了一个案例语句,其中似乎调用了 nunit 测试,但这不是 NUnit 测试的正常运行方式,我们不知道每个测试是否(例如)获得了唯一的驱动程序。IOW,还有很多其他事情可能会出错,我怀疑有很多关于如何运行测试的信息你还没有分享。


推荐阅读