如何从并行运行中排除某些功能/场景?

时间:2019-04-05 16:04:09

标签: c# selenium nunit specflow parallel-testing

我有一个使用Specflow,硒和NUnit并行运行的测试解决方案 在AssemblyInfo中添加了以下内容: [assembly: Parallelizable(ParallelScope.Fixtures)]

所有内容都可以很好地并行运行,但是现在我添加了一个功能,其中包含一些与所有其他场景都不兼容的场景。 因此,我希望他们分开运行。

反正有这样做吗?

注意:我知道“ [NonParallelizable]”,因为我正在使用specflow,所以我只是不知道如何应用它。

2 个答案:

答案 0 :(得分:0)

您应该能够使用[NonParallelizable]或等效的[Parallelizable(ParallelScope.None)]装饰要从并行运行中排除的特定测试。

请参见the docs

答案 1 :(得分:0)

您需要为feature.cs文件添加[Parallelizable(ParallelScope.None)]。您可以手动执行此操作,但是在构建解决方案时,此更改将被覆盖。

在MsTestV2中,我们可以通过添加标签“ @mstest:donotparallelize”将方案从并行执行中排除。不确定nUnit

  • Feature = Class
  • Scenario = Method

下面是设置文件

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Path to Test Adapters Use for mstest v2-->
  <TestAdaptersPaths>.\</TestAdaptersPaths>
  <MSTest>
    <Parallelize>
      <Workers>4</Workers>
      <Scope>Class</Scope>
    </Parallelize>
  </MSTest>
</RunSettings>

现在将标记添加到您不想并行执行的功能文件中。

@mstest:donotparallelize
Feature: Calculator
    In order to avoid silly mistakes
    As a math idiot
    I want to be told the sum of two numbers

这将在feature.cs文件中添加[Microsoft.VisualStudio.TestTools.UnitTesting.DoNotParallelize()]属性