我正在尝试用NUnit编写一些Selenium测试并尽力保持一个干净的测试设计(为每个测试测试一件事)。所以我得到了类似的东西
[TestFixture]
public class SomeTest
{
IWebDriver driver;
[Setup]
public void Setup()
{
driver = new InternetExplorerDriver();
}
[Test]
public void Test1()
{
}
[Test]
public void Test2()
{
}
[Teardown]
public void Teardown()
{
driver.Close();
}
}
现在这很好,但随着测试次数的增加,事情变得非常缓慢。为每个测试启动和停止整个浏览器是一个瓶颈。
在上次测试之前保持浏览器打开的任何方法?或者更好的方法/设计?
答案 0 :(得分:3)
为了只为每个灯具启动一个浏览器,您可以使用[TestFixtureSetUp] [TestFixtureTearDown]而不是[SetUp]和[TearDown]:
[TestFixture]
public class SomeTest
{
IWebDriver driver;
[TestFixtureSetUp]
public void Setup()
{
driver = new InternetExplorerDriver();
}
[Test]
public void Test1()
{
}
[Test]
public void Test2()
{
}
[TestFixtureTearDown]
public void Teardown()
{
driver.Close();
}
}
当然,这对固定装置没有帮助,但仍然可以带来一些性能提升。
答案 1 :(得分:0)
您可以在其名称中使用'test'创建一个方法。此测试方法将包含调用其他方法(名称中没有“test”)。那些其他方法将是您的测试用例。 名称中带有'test'的每个方法都会导致打开和关闭浏览器。通过使用上述解决方案,您只需打开浏览器一次,您将一次一个地完成所有测试用例。