2012-11-26 108 views
0

我刚开始使用硒 - 目前我只对IE感兴趣,因为它是一个内联网站点,不适合公共消费。我使用IEDriverServer.exe来设置我的浏览器会话,但我不确定是否需要为每个测试重新创建它,或者是否会自动维护浏览器会话/测试的原子性。我一直无法找到任何有关这方面的信息,因为大多数例子都是针对单个测试而不是一批单元测试。我是否需要为每个测试重新创建我的驱动程序?

所以目前我有

[TestInitialize] 
public void SetUp() 
{    
    _driver = new InternetExplorerDriver(); 
} 

[TestCleanup] 
public void TearDown() 
{ 
    _driver.Close(); 
    _driver.Quit(); 
} 

这是正确的还是我在做额外的不必要的工作,为每个测试?我应该在声明它时初始化它吗?如果是这样,我如何管理其生命周期?我想我可以打电话.Close()为每个测试杀死浏览器窗口,但.Quit()呢?

回答

1

我使用Selenium和NUnit,但不需要每次都重新创建它。由于您使用MSTest的,我会做这样的事情:

[ClassInitialize] 
public void SetUp() 
{    
    _driver = new InternetExplorerDriver(); 
} 

[ClassCleanup] 
public void TearDown() 
{ 
    _driver.Close(); 
    _driver.Quit(); 
} 

ClassInitialize将再次调用代码每次测试类初始化,并ClassCleanup将再次调用代码每次测试类拆卸/处理。

虽然这仍不能保证,因为测试跑步可以使测试的几个线程:

http://blogs.msdn.com/b/nnaderi/archive/2007/02/17/explaining-execution-order.aspx

你还必须考虑你要测试什么样的状态在各时间点开始。每次关闭和启动一个新的浏览器会话的最常见原因是你可以有一个干净的平板来处理。

有时这是不必要的工作,正如您已经指出的那样,但您的测试起点是什么?

对于我来说,每个测试类都有一个浏览器,并有一种方法可以注销我的Web应用程序,并保留在每次测试结束时的登录页面。

+0

感谢您的信息,希望这会帮助其他人想知道的一样! – Alex

相关问题