Я бы сделал следующее:
Создайте класс BaseTest для организации и абстрагирования ваших тестовых случаев. Здесь мы также создадим свойство TestContext, чтобы использовать коллекцию Properties, чтобы получить TestProperty, которым мы украсим TestMethod, и таким образом инициализировать ваш драйвер с указанным браузером:
public class BaseTest
{
private string _url = "Your AUT URL...";
public TestContext TestContext { get; set; }
[TestInitialize]
public void SetUp()
{
var testPropertyValues = TestContext.Properties;
var testBrowser = testPropertyValues["Browser"];
DriverFactory.SetBrowserDriver(testBrowser);
DriverFactory.Driver.Navigate().GoToUrl(_url);
}
[TestCleanup]
public void TearDown()
{
DriverFactory.Driver.Quit();
}
}
Создайте класс c DriverFactory, чтобы ваш объект WebDriver создавался и инициализировался там, а затем вам нужно было бы только вызвать метод DriverFactory.SetBrowserDriver () в TestInitialize:
public static class DriverFactory
{
public static IWebDriver Driver { get; set; }
public static void SetBrowserDriver(string browserName)
{
switch (browserName.ToUpper())
{
case "FIREFOX":
new WebDriverManager.DriverManager().SetUpDriver(new FirefoxConfig());
Driver = new FirefoxDriver();
break;
case "CHROME":
Driver = new ChromeDriver();
break;
}
Driver.Manage().Window.Maximize();
}
}
Для параллельного запуска тестов используйте атрибут [Parallelize] в сборке:
[assembly: Parallelize(Workers = 0, Scope = ExecutionScope.MethodLevel)]
namespace TestCases
public class Test : BaseTest
{
[TestMethod]
[TestProperty("Browser", "Chrome")]
public void TestMethod1()
{
//-- Test Logic
}
[TestMethod]
[TestProperty("Browser", "Firefox")]
public void TestMethod2()
{
//-- Test Logic
}
}
Я надеюсь, что этот ответ, если не решение, поможет найти правильный путь (:
Предостережение: я новичок в этом, поэтому будьте добры: D