【问题标题】:SpecFlow Parallel execution in same or multiple test agentSpecFlow 在同一个或多个测试代理中并行执行
【发布时间】:2019-06-24 03:25:39
【问题描述】:

如何使用 MS 测试在同一个测试代理上并行执行 specflow 测试用例

【问题讨论】:

    标签: c# selenium-webdriver mstest specflow


    【解决方案1】:

    你有两个选择:

    程序集属性

    如果您只有一个测试程序集并且代码是可修改的,则此选项适用。
    如果您可以在程序集的任何位置添加以下程序集属性(例如 properties.cs 文件或任何测试类文件),您应该能够让 specflow 测试并行运行。

    [assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
    

    .runsettings 文件设置

    如果您有多个要并行化的测试程序集,您可以在解决方案的根目录下创建一个名为 .runsettings 的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RunSettings>
      <MSTest>
        <Parallelize>
          <Workers>8</Workers>
          <Scope>MethodLevel</Scope>
        </Parallelize>
      </MSTest>
    </RunSettings>
    

    并行化有3个范围:

    (1) ClassLevel – 每个线程执行一个 TestClass 的测试。 在 TestClass 中,测试方法按顺序执行。这是 默认 - 类中的测试可能具有相互依赖关系,我们 不想太激进。

    (2) MethodLevel – 每个线程执行一个TestMethod。

    (3) Custom – 用户可以提供一个插件来实现 所需的执行语义。目前尚不支持,但 之所以提到,是因为 - 像所有 MSTest V2 一样 - 我们设计了 考虑到可扩展性的功能。

    更多详情请参考this blog

    【讨论】:

    • 不要将 MethodLevel 与 SpecFlow 一起使用。你会得到错误(我们在这个级别上不是线程安全的)。您需要使用 ClassLevel。
    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2021-10-29
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多