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

如何并行运行多个NUnit测试夹具但不并行执行内部组合测试方法

NUnit 并行配置实现方案:不同夹具并行,同夹具内串行

你的需求可以通过NUnit的[Parallelizable]和[NonParallelizable]特性组合实现,核心是精准控制并行的层级范围,以下是具体配置方案:

核心需求梳理

  • 不同夹具文件(如LoginFixture和其他业务夹具)之间允许并行运行
  • LoginFixture的三个参数化实例(Chrome、Firefox、Edge)彼此串行,避免浏览器资源冲突
  • 单个夹具实例内,Combinatorial生成的所有测试用例串行执行,防止同一浏览器内的测试互相干扰

修改后的代码示例

namespace Tests
{
    // 为每个参数化夹具实例标记:自身串行,但允许与其他夹具并行
    [TestFixture(Chrome), NonParallelizable(ParallelScope.Self)]
    [TestFixture(Firefox), NonParallelizable(ParallelScope.Self)]
    [TestFixture(Edge), NonParallelizable(ParallelScope.Self)]
    // 允许该夹具类与其他标记了Fixture级并行的夹具同时运行
    [Parallelizable(ParallelScope.Fixtures)]
    public class LoginFixture: BrowserSetupBase
    {
        public LoginFixture(string browser) : base(browser: browser){}

        // 标记测试方法串行,确保同一夹具实例内的组合用例按顺序执行
        [Test, Combinatorial, NonParallelizable]
        public void ShouldLoginAndLogout(
            [Values("SiteOne", "SiteTwo")] string website,
            [ValueSource(typeof(UserNamesClass), nameof(Values))] string userName
        )
        {
            // Run Test
        }
    }

    // 其他业务夹具示例,遵循相同规则:与外部夹具并行,自身实例内串行
    [Parallelizable(ParallelScope.Fixtures)]
    [NonParallelizable(ParallelScope.Self)]
    public class CheckoutFixture
    {
        [Test, NonParallelizable]
        public void ShouldCompleteCheckout()
        {
            // Run Test
        }
    }
}

特性作用说明

  • [Parallelizable(ParallelScope.Fixtures)]:作用于夹具类,允许该夹具与其他开启了Fixture级并行的夹具同时执行,实现跨夹具的并行能力。
  • [NonParallelizable(ParallelScope.Self)]:作用于每个[TestFixture]参数化实例,限制同一夹具的不同参数实例(如Chrome和Firefox)不能并行,避免浏览器资源竞争。
  • [NonParallelizable]:作用于测试方法,确保同一夹具实例内的所有测试用例(包括Combinatorial生成的组合用例)串行执行,防止同一浏览器会话内的测试相互干扰。

全局并行配置补充

需确保NUnit全局并行开关开启,可通过nunit.runsettings文件配置:

<RunSettings>
  <NUnit>
    <Parallelize>
      <Workers>4</Workers> <!-- 根据本地CPU核心数设置合理的工作线程数 -->
      <Scope>Fixtures</Scope> <!-- 全局默认并行范围设为夹具级 -->
    </Parallelize>
  </NUnit>
</RunSettings>

内容的提问来源于stack exchange,提问作者ascendantofrain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:47:29