You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于单例Driver并行运行自动化测试(支持非单例方案)

嘿,关于并行测试和Driver实例的问题,我给你捋清楚哈~

首先得明确:你当前的单例Driver模式完全不适合并行测试场景!因为单例会让所有并行运行的测试用例共享同一个ChromeDriver实例,多个测试同时操作同一个浏览器窗口,结果必然是步骤混乱、测试失败,完全达不到并行的目的。

要实现可靠的并行测试,核心是保证每个测试用例拥有独立隔离的Driver实例,下面给你提供正确的实现方案:

方案1:测试用例父类实现独立Driver管理

直接在测试父类的SetUp(测试前置)中初始化专属Driver,TearDown(测试后置)中销毁,确保每个测试实例互不干扰:

[TestFixture, Apartment(ApartmentState.MTA)]
[Parallelizable(ParallelScope.Self)]
public class TestCase
{
    protected IWebDriver driver; // 每个测试实例独占的Driver

    [SetUp]
    public void SetupTest()
    {
        // 配置Chrome选项,提升并行稳定性
        var chromeOptions = new ChromeOptions();
        chromeOptions.AddArgument("--disable-gpu");
        chromeOptions.AddArgument("--no-sandbox");
        chromeOptions.AddArgument("--headless=new"); // 不需要可视化界面时开启,加快测试速度

        // 为当前测试创建独立的ChromeDriver实例
        driver = new ChromeDriver("你的ChromeDriver所在路径", chromeOptions);
        driver.Manage().Window.Maximize();
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
    }

    [TearDown]
    public void TeardownTest()
    {
        // 测试结束后彻底销毁Driver,避免内存泄漏
        if (driver != null)
        {
            driver.Quit();
            driver.Dispose();
        }
    }
}

方案2:封装非单例的Driver工厂(可选)

如果想把Driver的创建逻辑抽离出来,可以写一个工厂类,每次调用都返回新的Driver实例(不是单例):

public static class DriverFactory
{
    public static IWebDriver CreateChromeDriver()
    {
        var chromeOptions = new ChromeOptions();
        chromeOptions.AddArgument("--disable-gpu");
        chromeOptions.AddArgument("--no-sandbox");
        chromeOptions.AddArgument("--headless=new");

        return new ChromeDriver("你的ChromeDriver所在路径", chromeOptions);
    }
}

然后在父类的SetUp中调用:

driver = DriverFactory.CreateChromeDriver();

关键注意点

  • [Parallelizable(ParallelScope.Self)]:这个特性是NUnit中控制并行范围的关键,确保每个测试用例实例可以独立并行运行,配合独立的Driver实例,就能实现真正的并行测试。
  • 一定要避免共享Driver实例:任何形式的全局共享(单例、静态变量)都会破坏测试隔离,导致并行测试失败。

内容的提问来源于stack exchange,提问作者Miguel D'Alessio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:09:27