1

我正在构建一个 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]属性,我可以在基类中加载两组配置并在那里加载配置并消除对超类的需求,这些超类基本上仅用于方便地运行一堆测试.

4

1 回答 1

0

你看过 NUnit 的 SetUpFixture 特性吗?我做了一些与你正在尝试的事情类似的事情。

我写了一篇关于使用 SetUpFixture 预热网站的博文,不过,这是一项不同的任务。这可能会有所帮助。

于 2013-06-27T17:30:20.267 回答