如何在所有测试中使用同一组数据?

时间:2019-05-23 17:22:12

标签: c# selenium-webdriver

我对Selenium还是比较陌生,所以这似乎是一个愚蠢的问题。 我正在尝试使用相同的Web模板自动化两个网站的测试,并且由于代码几乎相同,所以不想为每个网站创建单独的项目。

到目前为止,在尝试在同一个项目中同时做两个站点时,我必须在我进行的每个测试中添加以下内容:

[TestCase("http://website1.com", "http://website2.com"]
public void Test1(string url1, string url2){
...
}
[TestCase("http://website1.com", "http://website2.com"]
public void Test2(string url1, string url2){
...
}

我试图做的另一件事是使用TestFixture批注,并刚刚创建了一个构造函数来接受它:

[TestFixture(typeof(ChromeDriver), "http://website1.com"), Parallelizable]
[TestFixture(typeof(ChromeDriver), "http://website2.com")]
public class Home<TWebDriver> where TWebDriver : IWebDriver, new()
{
    IWebDriver driver;
    string homePage = string.Empty;
    string browser = string.Empty;
    ICapabilities capabilities;

    public Home(string url)
    {
        homePage = url;
    }

但是接下来我的另一个问题是,我的项目也需要在FireFox和Internet Explorer中进行并行测试,这将更加像这样:

[TestFixture(typeof(ChromeDriver), "http://website1com"), Parallelizable]
[TestFixture(typeof(ChromeDriver), "http://website2.com")]
[TestFixture(typeof(InternetExplorerDriver), "http://website1.com")]
[TestFixture(typeof(InternetExplorerDriver), "http://website2.com")]
[TestFixture(typeof(FirefoxDriver), "http://website1.com")]
[TestFixture(typeof(FirefoxDriver), "http://website2.com")]

这样做,如果需要新的浏览器进行测试或添加了另一个网站,这看起来就像是一团糟,并且难以维护。

我当时正在考虑为要调用的测试创建一个URL列表,但是如果我调用一个断言测试该URL中的一个,然后失败,它将不再测试其他URL。

所以重申我的问题,我如何在所有测试和新测试中测试相同的数据(url),而不必重新添加相同的TestCase?或者,如果我走错路了。

编辑:使用TestFixture的最后一种方法是在并行运行时会产生类似陈旧元素或找不到元素之类的问题,这就是我想要运行的方式。

0 个答案:

没有答案