NUnits:以定义的顺序并行开始自动化测试(Selenium)

NUnits: Start automation tests parallel in a defined order (Selenium)

我正在使用 NUnit 和 Selenium 为我们的网站编写自动化测试。

我们有 2 个不同的用户 (aminInt and hsuInt) 和 3 个功能需要测试(在下面的示例中 TestA, TestB, TestC

在我下面的示例中,测试资源管理器中总共有 6 个自动化测试,因为每个功能都由两个用户进行测试。

一切正常。每个测试都有自己的 webDriver,所有测试都是独立的。

现在我想开始并行测试。

我已经尝试了所有可以在网上找到的方法。在 parallelizable 中尝试了不同的参数,但我无法正确处理。

我想一次开始 2 个测试。

例如:

First test:
TestA adminInt
TestA hsuInt

完成上述两个测试后,应该开始:

Second Test:
TestB adminInt
TestB hsuInt

如果您的目标是节省时间并且您的测试是真正独立的,那么试图控制执行顺序并不是您想要的。本质上,NUnit 的工作是并行计算 how 到 运行。你的工作只是告诉 NUnit 你写的测试是否 capable of 运行ning parallel.

要告诉 NUnit 哪些测试可以 运行 并行,请使用 [Non]ParallelizableAttribute。如果将属性放在fixtures上,它们的不同含义如下...

[NonParallelizable] 表示灯具 不能 运行 与任何其他灯具并行。如果您未指定任何属性,则这是默认设置。

[Parallelizable] 表示该灯具 能够 运行 与测试中的其他灯具并行。

[Parallelizable(ParallelScope.All)] 表示 fixture 和该 fixture 下的所有单独测试都是 capable of 运行ning 并行。

[Parallelizable(ParallelScope.Children] 表示 fixture not capable of 运行ning with other fixtures but the test methods under it may 运行 并行。

我在上面强调了能力,因为这是你应该关注的。不要期望 NUnit 运行 某些测试与其他特定测试一起使用该属性,因为没有 NUnit 功能可以做到这一点。把注意力集中在你能控制的事情上……编写独立的、可并行的测试并告诉 NUnit 它们是哪些。

如果您发现 NUnit 一次启动了太多测试线程,您可以在 AssemblyInfo.cs 中放置一个 LevelOfParallelism 属性。但是,请记住 NUnit 默认值取决于可用的内核数。因此,在您的开发机器上适合您的方法可能无法在您的 CI 构建中提供最佳性能。我的建议是让 NUnit 对大多数事情使用它的默认值,直到你找到覆盖它们的理由。

感谢您的回答。

我找到了如何同时启动 2 个测试的解决方案。

在class前面加上这个参数,只有2个测试会并行启动。 //[assembly: LevelOfParallelism(2)] 您只需要在一个 class 内使用此参数。因此,如果您有不同的 class es,它们有自己的测试,请将此参数仅添加到一个 class 并且只要您也有 fixture 命令,它就会 运行 所有并行测试。

[TestFixture("userA")] [TestFixture("userB")]

例如为 2 个不同的用户开始测试。