【问题标题】:How to manage automated UI test code for different browsers?如何管理不同浏览器的自动化 UI 测试代码?
【发布时间】:2012-06-06 07:49:00
【问题描述】:

我们正在尝试使用 Selenium 进行一些自动化 UI 测试。到目前为止,对于一个函数,我们至少为 IE、FF、Chrome 编写了 3 个测试。

例如,我们为 login 函数编写了 3 个测试:LoginTestFFLoginTestIELoginTestChrome。这样,我们可以在 VS Test View 中看到 3 个项目,并且可以选择其中一项或全部运行。

感谢 Selenium,每个浏览器的测试代码几乎相同。所以我们不想再重复了。

是否可以在 VS 测试视图中看到测试,例如:

LoginTestFF
LoginTestIE
LoginTestChrome

但是使用一组测试代码?

我发现 xUnit should be OK 中的 [Browser] 属性。

如何为 Visual Studio 测试开发这样的属性?

【问题讨论】:

  • 您使用哪种测试框架(JUnit、TestNG、...)?哪种语言(Java、C#、Ook!、...)?
  • WebDriver, WebDriverBackedSelenium, Selenium1 ?
  • 我使用的版本是 selenium-dotnet-2.21.0 和 C# 4.0

标签: c# selenium webdriver automated-tests selenium-webdriver


【解决方案1】:

如果你还想看到这三个都是 VS 测试视图,你可以试试这个。 (但是如果你有十个不同的浏览器呢?)

[TestMethod]
public void LoginTestFF() {
    ExecuteLoginTest();
}

[TestMethod]
public void LoginTestIE() {
    ExecuteLoginTest();
}

[TestMethod]
public void LoginTestChrome() {
    ExecuteLoginTest();
}

public void ExecuteLoginTest() {
    //real test steps
}

如果您只想为所有浏览器重用代码,您可以在 App.config 中定义您想要的浏览器,然后使用 switch case 进行选择。

<add key="Browser" value="Chrome"/>
IWebDriver driver;
string browser = ConfigurationManager.AppSettings["Browser"];
switch (browser) {
    case "Firefox":
        driver = new FirefoxDriver();
        break;
    case "IE":
        driver = new InterntExplorerDriver();
        break;
    case "Chrome":
        driver = new ChromeDriver();
        break;
    default:
        break;
}
// if this test can only be run against FF and Chrome, add test category to it
[TestMethod, TestCategory("Firefox"), TestCategory("Chrome")]
public void LoginTestTest() {
    //real test steps
}

【讨论】:

    【解决方案2】:

    我不确定 VS 的方法。

    使用 NUnit,使用参数化测试,这就是将参数传递到测试用例中的想法。因此,您无需使用 LoginFF、LoginIE、LoginChrome,而是使用类似于以下内容的内容:

    [TestCase(Browser.IE)]
    [TestCase(Browser.Firefox)]
    [TestCase(Browser.Chrome)]
    public void TestLogin(Browser browser)
    {
        // test stuff
    }
    

    这样就可以为您提供的每个测试用例源属性重复测试 - 这比为每种浏览器类型复制/粘贴您的测试方法要好。

    在我的示例中,结合 Resharper、JustCode 或任何 NUnit Test Runner,它将在 VS 中显示 3 次测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-23
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多