C# 如何管理不同浏览器的自动化UI测试代码?

C# 如何管理不同浏览器的自动化UI测试代码?,c#,selenium,webdriver,automated-tests,selenium-webdriver,C#,Selenium,Webdriver,Automated Tests,Selenium Webdriver,我们正在尝试使用Selenium进行一些自动化UI测试。到目前为止,对于一个函数,我们至少为IE、FF、Chrome编写了3个测试 例如,我们为login函数编写了3个测试:LoginTestFF,LoginTestIE,LoginTestChrome。通过这种方式,我们可以在VS测试视图中看到3个项目,并可以选择其中一个或所有项目来运行 由于Selenium,每个浏览器的测试代码几乎相同。所以我们不想再重复了 是否可以在VS测试视图中查看测试,如: LoginTestFF LoginTestI

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

例如,我们为
login
函数编写了3个测试:
LoginTestFF
LoginTestIE
LoginTestChrome
。通过这种方式,我们可以在VS测试视图中看到3个项目,并可以选择其中一个或所有项目来运行

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

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

LoginTestFF
LoginTestIE
LoginTestChrome
但是使用一组测试代码

我在xUnit中发现了[Browser]属性


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

我不确定使用VS的方法

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

[TestCase(Browser.IE)]
[TestCase(Browser.Firefox)]
[TestCase(Browser.Chrome)]
public void TestLogin(Browser browser)
{
    // test stuff
}
因此,这会对您提供的每个测试用例源属性重复测试-这比为每个浏览器类型复制/粘贴测试方法要好


在我的示例中,与Resharper、JustCode或任何NUnit测试运行程序结合使用,它将在VS中显示测试三次。

我不确定VS的方法

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

[TestCase(Browser.IE)]
[TestCase(Browser.Firefox)]
[TestCase(Browser.Chrome)]
public void TestLogin(Browser browser)
{
    // test stuff
}
因此,这会对您提供的每个测试用例源属性重复测试-这比为每个浏览器类型复制/粘贴测试方法要好


在我的示例中,与Resharper、JustCode或任何NUnit测试运行程序结合使用,它将在VS中显示测试三次。

如果您仍然希望看到所有三个都是VS测试视图,您可以尝试此方法。(但是如果你有十种不同的浏览器呢?)

[TestMethod]
public void LoginTestFF(){
ExecuteLoginTest();
}
[测试方法]
public void LoginTestIE(){
ExecuteLoginTest();
}
[测试方法]
public void LoginTestChrome(){
ExecuteLoginTest();
}
public void ExecuteLoginTest(){
//实际测试步骤
}
如果您只想重用所有浏览器的代码,可以在App.config中定义所需的浏览器,然后使用开关大小写进行选择


IWebDriver;
字符串浏览器=ConfigurationManager.AppSettings[“浏览器”];
开关(浏览器){
案例“Firefox”:
驱动程序=新的FirefoxDriver();
打破
案例“IE”:
driver=新的InternetExplorerDriver();
打破
案例“铬”:
驱动程序=新的ChromeDriver();
打破
违约:
打破
}
//如果此测试只能针对FF和Chrome运行,请向其添加测试类别
[TestMethod、TestCategory(“Firefox”)、TestCategory(“Chrome”)]
public void LoginTestTest(){
//实际测试步骤
}

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

[TestMethod]
public void LoginTestFF(){
ExecuteLoginTest();
}
[测试方法]
public void LoginTestIE(){
ExecuteLoginTest();
}
[测试方法]
public void LoginTestChrome(){
ExecuteLoginTest();
}
public void ExecuteLoginTest(){
//实际测试步骤
}
如果您只想重用所有浏览器的代码,可以在App.config中定义所需的浏览器,然后使用开关大小写进行选择


IWebDriver;
字符串浏览器=ConfigurationManager.AppSettings[“浏览器”];
开关(浏览器){
案例“Firefox”:
驱动程序=新的FirefoxDriver();
打破
案例“IE”:
driver=新的InternetExplorerDriver();
打破
案例“铬”:
驱动程序=新的ChromeDriver();
打破
违约:
打破
}
//如果此测试只能针对FF和Chrome运行,请向其添加测试类别
[TestMethod、TestCategory(“Firefox”)、TestCategory(“Chrome”)]
public void LoginTestTest(){
//实际测试步骤
}

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