我正在Visual Studio Enterprise 2019 16.3.9版/“测试资源管理器”窗口中执行测试。我的架构是2.80Ghz(4 CPU)的Intel(R)CoreTM i7-7600 CPU,〜2.9Ghz这是下面的伪Selenium C#代码:
[TestFixture]
internal class TestClass{
[OneTimeSetUp]
public void OneTimeSetUp()
{
initializeExtentReport()
}
[SetUp]
public void Setup()
{
initializeChromebBrowser();
}
[Test]
public void NavigatoToGmail()
{
bool isGmailAccessible = GoToUrl("https://www.google.com/");
Assert.True(isGmailAccessible);
}
[Test]
public void NavigatoToMicrosoft()
{
bool isMicrosoftAccessible = GoToUrl("https://www.microsoft.com/");
Assert.True(isMicrosoftAccessible);
}
[Test]
public void NavigatoToYahoo()
{
bool isYahooAccessible = GoToUrl("https://www.yahoo.com/");
Assert.True(isYahooAccessible);
}
[TearDown]
public void TearDOwn()
{
CloseBrowser();
}
[OneTimeTearDown]
public void OneTimeTearDown()
{
FinishExtentReport();
}
所以这是我已经尝试过的,但是没有用
将[Parallelizable(ParallelScope.Children)]
添加到类中,并将[Parallelizable(ParallelScope.Self)]
属性添加到每个测试方法中。结果-3个浏览器实例打开而没有其他操作。没有URL导航,什么也没有。
将[Parallelizable(ParallelScope.All)]
添加到类中,并将[Parallelizable(ParallelScope.Self)]
添加到每个测试方法中。结果-3个浏览器实例打开。仅执行最后一个测试(NavigatoToYahoo)并提供结果。前2个-没有其他动作发生,浏览器窗口没有关闭,这意味着TearDown()方法没有执行。
只需将[Parallelizable(ParallelScope.Self)]
添加到每种测试方法。结果-3个浏览器实例打开而没有其他操作。没有URL导航,什么也没有。
将[Parallelizable(ParallelScope.Self)]
添加到类中,并将[Parallelizable(ParallelScope.Self)]
属性添加到每个测试方法中。结果-3个浏览器实例打开。第二个测试(NavigateToMicrosoft)得到执行,其余的2 –没有其他动作,没有URL导航,什么也没有。
将[Parallelizable(ParallelScope.Self)]
添加到类中,并将[Parallelizable(ParallelScope.All)]
属性添加到每个测试方法中。结果-收到错误消息May not specify ParallelScope.Children on a non-parameterized test method
-老实说不知道为什么
我在https://github.com/nunit/docs/wiki/Parallelizable-Attribute中浏览了文档,但我觉得没有实际的方法可以使用NUnit框架并行执行单元测试。
我只是想并行地独立运行这3个测试(在我的实际场景中,大约有100个)。
如果单元测试在同一类中,则不会并行运行。如果您有3个单独的测试类,则应该可以使用。
@@尼尔的答案是错误的。 NUnit将根据您指定的方式在一个程序集中并行运行测试。但是,您在这里处理的是两个软件,每个软件都有其自己的并行处理方式。我可以回答WRT NUnit,所以至少您不会浪费时间不必要地使用属性。
[Parallelizable]
与`[Parallelizable(ParallelScope.Self)]相同。 IMO最好的样式是不带属性使用它,但是两者是相等的。
[[ParallelScope.All]
是[ParallelScope.Self | ParallelScope.Children]
的缩写。
因此,您只需要担心两个设置:自我(隐式或显式)和子代。
将Children
放在类上与在每个测试用例上放置Self
相同。在这两种情况下,测试可以并行运行。
当放置在灯具类上时,Self
表示该灯具可以与上面也带有Self
的其他灯具并行运行。如果该固定装置中的测试也可以并行化,则它们将与所有并行固定装置中的所有测试并行运行。
如果您仅运行NUnit,即不使用Selenium,则只需将[Parallelizable]
放在每个测试上,或将'[Parallelizable(ParallelScope.Children)]`放在灯具上-要么做同样的事情。
如果您有多个固定装置,并且不
[Parallelizable]
放在固定装置上,或将[Parallelizabel(ParallelScope.All)]
放在固定装置上,而在测试用例上什么也不放。一些人似乎很想念的东西:[Parallelizable]
使您的测试并行运行。它不
NUnit就是这样。现在,如果将硒添加到混合物中,则取决于您的使用方式。如果Selenium正在为您启动流程,那么您在NUnit中所做的事情将不会产生影响。您需要了解Selenium并行化如何与NUnit交互。我只是告诉你NUnit的作用。
一个观察结果...除非您的测试用例很少或需要很长时间,否则您可能会获得性能相同或更好的并行运行夹具,并让测试在夹具中依次运行。