2017-02-14 36 views
-1

我们使用硒和FitNesse的用于UI测试,我们打开Firefox和执行所有的用户界面相关的操作 - 点击,填写领域,按下按钮等如何绕过Fitnesse SetUp/TearDown进行单项测试?

由于我们目前的测试框架的一部分,FitnesseRoot有设置/ TearDown定义,打开/销毁浏览器实例。所有套件和测试(大约300个)使用SetUp/TearDown作为UI测试的一部分。

我想用新的灯具代替我们的简单测试之一进行API测试,因为API测试比UI测试要快得多。测试本身工作正常,但问题在于即使我的​​REST装置不需要浏览器实例,SetUp会打开它并且TearDown尝试关闭它,但会返回一个异常(因为执行中的测试指向API驱动程序类,而TearDown中的方法属于UI Driver类)。

如上所述,我无法删除SetUp/TearDown,因为它对300个测试用例有影响。有什么办法可以阻止一个特定的测试使用SetUp/TearDown?或者将TearDown指向UI驱动程序类,以便测试不会引发异常?

SetUp

|import   | 
|com.myapplication.fitnesse.ui| 
|com.myapplication.util.restclient.fixtures| 

!define slim.flags {-s 200} 

!|script |                       
|start| my UI driver class|${SERVER}|${PORT}|FIREFOX|${PAGE_PATH}.${PAGE_NAME}|${PROXYSERVER}| 
|debug mode   |false |  

实际测试:

!define TEST_SYSTEM {slim} 
| script | my API driver class | server ip:port | username | password| 
| login | 
| do something...| 

TearDown

|script    | 
|logout    | 
|destroyDriver  | 

回答

0

感谢您的答复,但而不是分布在不同的套件测试中,我用下面的切换驱动程序:

的SetUp => |脚本| | start |我的UI驱动类| $ {SERVER} | $ {PORT} | FIREFOX | $ {PAGE_PATH}。$ {PAGE_NAME} | $ {PROXYSERVER} | |调试模式| false | | $ my_UI_DRIVER = | get fixture |

Actual Test => !define TEST_SYSTEM {slim} |脚本|我的API驱动类|服务器IP:端口|用户名|密码| |登录| |做一点事...|

TearDown => | script | $ my_UI_DRIVER | |注销| | destroyDriver |

SetUp按照UI驱动程序类中提到的方式打开浏览器。我的Fitnesse测试指向API驱动程序类并执行我的测试。 TearDown指向UI驱动程序类并关闭浏览器。因此,我的测试工作正常,没有任何错误/例外。这样我就可以在一个测试中将API和UI结合起来。

1

我倾向于做的是组织我的测试分为套房:前端和后端例如一个。前端设备启动硒,后端设备无法启动。所以这个设置不在根层,但是(至少)一个。

其实我倾向于在S​​uiteSetUp中启动硒而不是在安装程序中,并在测试之间重新使用驱动程序。我发现这可以加快测试的速度。然后在SuiteTearDown中关闭驱动程序。 嵌套套件可以通过定义它们自己来覆盖父级的SuiteSetUp(和SuiteTearDown)。

我希望这也适用于您的情况。为API测试定义一个(或多个)独立套件,并为这些套件设置和拆卸而不使用硒。我还没有尝试过,但我希望父母的设置和拆卸在这种情况下被忽略。