我有一个Selenium GRID安装程序,其上有各种浏览器(IE6,7,8,FF 3.5.6),用C#编写,并且单独运行正常。我还有一套Selenium Tests设置,它们也可以很好地处理我传递给它们的环境。我要求的是一种方法,以编程方式设置不同的单元测试,以循环通过Selenium GRID上可用的所有浏览器。
没有那么多的浏览器,所以像列表或浏览器数组这样的东西很好,但我无法想象通过浏览器安装和TearDown循环。我正在使用C#和NUnit以及Selenium Grid和3个Selenium RCs连接到它。
我甚至不介意改为MbUnit,如果这意味着我可以循环浏览器。
非常感谢
答案 0 :(得分:0)
一个(相当丑陋)的选项可能是在目标浏览器中传递的测试方法上使用RowTest扩展 - 以设置污染实际测试方法并可能减慢整个测试套件的速度。
答案 1 :(得分:0)
如果您使用MbUnit
,则可以将Factory
属性绑定到变量。然后让Data Factory
返回您想要自动化的每种类型的浏览器。它将在每个浏览器执行一次测试。
http://www.gallio.org/wiki/doku.php?id=mbunit:data-driven_testing:factory
答案 2 :(得分:0)
如果您使用NUnit,则可以在基础测试类中指定所需的所有浏览器{/ 3}}:
namespace Tests
{
[TestFixture("*firefox")]
[TestFixture("*iexplore")]
public abstract class Test
{
private static string _browser;
protected Test()
{
}
protected Test(string browser)
{
SetBrowser(browser);
}
public static void SetBrowser(string browser)
{
_browser = browser;
}
[SetUp]
public virtual void Setup()
{
Selenium = new DefaultSelenium(localhost, 5555, _browser, "http://www.google.com/");
Selenium.Start();
}
[TearDown]
public virtual void TearDown()
{
Selenium.Stop();
}
}
}
测试本身就是这样的:
namespace Tests
{
[TestFixture]
public class Test1 : Test
{
public Test1(string browser)
{
SetBrowser(browser);
}
[Test]
public void FirstTest()
{
...
}
}
}
2)您可以通过parameterized TextFixtures指定浏览器。缺点:每个测试都应该在test.conf文件中提到。优点:所有指定的浏览器都将并行运行。 test.conf文件的示例,其中为两个浏览器指定了一个测试:
<TestGroup>
<ParallelTests>
<ParallelTest>
<Name>Tests</Name>
<Tests>
<TestConf>
<Name>Test1FF</Name>
<Assembly>Test.dll</Assembly>
<TestToRun>Test.Tests.Test1</TestToRun>
<Machine>localhost:8080</Machine>
<TestParams>
<string>*firefox</string>
</TestParams>
</TestConf>
<TestConf>
<Name>Test1IE</Name>
<Assembly>Test.dll</Assembly>
<TestToRun>Test.Tests.Test1</TestToRun>
<Machine>localhost:8080</Machine>
<TestParams>
<string>*iexplore</string>
</TestParams>
</TestConf>
</Tests>
</ParallelTest>
</ParallelTests>
</TestGroup>
基础测试类将是这样的:
using NUnit.Framework;
using PNUnit.Framework;
namespace Tests
{
[TestFixture]
public class Test
{
private string browser;
protected Test()
{
}
[SetUp]
public virtual void Setup()
{
browser = PNUnitServices.Get().GetTestParams();
Selenium = new DefaultSelenium(localhost, 5555, browser, "http://www.google.com/");
Selenium.Start();
}
[TearDown]
public virtual void TearDown()
{
Selenium.Stop();
}
}
}
3)您可以在app.config中指定浏览器并通过TeamCity进行更改。没有调查这个解决方案,所以不能给你一个例子。 希望前两个解决方案有所帮助。