我正在建立一个Selenium套件。我试图找出如何最好地为所有浏览器和所有客户运行TestFixture。这是我试图做的,由于“没有合适的构造函数”而无法正常工作
这是我的基类,它提供了一个浏览器和方法来创建子类的webdriver。
[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]
属性,我可以在基类中加载两组配置并在那里加载配置并消除超类的需要,这些基本上只是用来方便地运行一堆测试。
答案 0 :(得分:0)
你看过NUnit的SetUpFixture功能了吗?我做了一些与你正在尝试的东西模糊相似的东西。
我写了a blogpost on using SetUpFixture for warming up sites,这是一项不同的任务。这可能会有所帮助。