我正在构建一个 Selenium 套件。我试图弄清楚如何最好地为所有浏览器和我们所有的客户运行 TestFixture。这是我尝试做的,由于“没有合适的构造函数”而不起作用
这是我的基类,用于提供浏览器和方法来为子类创建 Web 驱动程序。
[TestFixture(Browser.Chrome)]
[TestFixture(Browser.Firefox)]
[TestFixture(Browser.IE)]
[TestFixture(Browser.Safari)]
abstract class WebDriverTest
{
protected IWebDriver driver;
protected Browser browser;
public WebDriverTest(Browser browser)
{
this.browser = browser;
}
protected IWebDriver CreateWebDriver()
{
CreateWebDriver(browser);
}
}
以及适用于所有客户的 TestFixture。对于属于某些客户端集的功能,我会有其他类似的测试类。
[TestFixture(Client.Client1)]
[TestFixture(Client.Client2)]
abstract class AllClientsTest : WebDriverTest
{
protected Client client;
public AllClientsTest(Browser browser, Client client) : base(browser)
{
this.client = client;
}
protected Navigator GetNavigator()
{
return NewNavigator(client)
}
}
最后是我将使用为所有客户端运行的 webdriver 编写测试的课程。
class InheritanceTest : AllClientsTest
{
public InheritanceTest(Browser browser, Client client) : base(browser, client)
{
}
[Test]
public void Print()
{
Console.WriteLine(browser + ":" + client);
}
}
这样的事情甚至可能吗?我试图保持配置独立于 TestRunner,而不是重复自己在测试用例中制作大量参数(可以是数据驱动的初始化)。我还尝试[TestFixture(typeof(Browser), typeof(Client))]
在AllClientsTest
类中添加一个属性。
如果有一种数据驱动的方式来设置[TestFixture]
属性,我可以在基类中加载两组配置并在那里加载配置并消除对超类的需求,这些超类基本上仅用于方便地运行一堆测试.