我正在尝试使用硒进行并行测试。我正在做的是将测试类复制和粘贴的次数与我希望执行测试的次数相同。然后,我只需按运行所有测试,它就可以正常工作,但是我想知道是否可以在一个类中多次运行一种方法而不是复制并发布它。 有办法吗?
答案 0 :(得分:1)
解决方案基本上取决于您使用的测试框架。 NUnit从3.7版本开始支持并行测试执行。演示该想法的示例如下
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace ConsoleApp1
{
[TestFixture]
public class Dummy
{
static TestCaseData Case(int i)
=> new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case {i}");
public static IEnumerable<TestCaseData> Cases()
=> Enumerable.Range(1, 5).Select(Case);
[TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)]
public void ItShouldSleep(TimeSpan t)
=> Thread.Sleep(t);
static TestCaseData Case2(int i)
=> new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case2 {i}");
public static IEnumerable<TestCaseData> Cases2()
=> Enumerable.Range(1, 5).Select(Case2);
[TestCaseSource(nameof(Cases2)), Parallelizable(ParallelScope.Children)]
public void ItShouldSleep2(TimeSpan t)
=> Thread.Sleep(t);
}
[TestFixture()]
public class Dummy2
{
static TestCaseData Case(int i)
=> new TestCaseData(TimeSpan.FromSeconds(2)).SetName($"Case {i}");
public static IEnumerable<TestCaseData> Cases()
=> Enumerable.Range(1, 5).Select(Case);
[TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)]
public void ItShouldSleep(TimeSpan t)
=> Thread.Sleep(t);
}
}
答案 1 :(得分:0)
@Sergey Prosin问题的更新,我用您的代码示例对其进行了修改,但问题是它打开了5个Chrome实例,但仅在一个实例上起作用,而不是同时在5个实例上起作用
[TestCaseSource(nameof(Cases)), Parallelizable(ParallelScope.Children)]
public void ItShouldSleep(TimeSpan t)
{
ChromeOptions options = new ChromeOptions();
options.AddArguments("--disable-notifications");
Driver = new ChromeDriver(@"C:\Users\slaouadi\source\repos\UnitTestProject1", options);
string baseUrl = "https://www.google.com/";
Driver.Navigate().GoToUrl(baseUrl);
Driver.FindElement(By.Id("lst-ib")).SendKeys("IT WORKED FINE");
}