如何绕过Fitnesse SetUp / TearDown进行单独测试?

时间:2017-02-14 16:44:45

标签: selenium fitnesse web-api-testing

我们正在使用Selenium和Fitnesse进行UI测试,我们打开Firefox并执行所有与UI相关的操作 - 点击,填写字段,按下按钮等。

作为我们当前测试框架的一部分,FitnesseRoot定义了SetUp / 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       |

2 个答案:

答案 0 :(得分:1)

我倾向于将测试组织到套件中:例如前端和后端。前端的设备会启动硒,而后端设备则不会。所以设置不是根级别,而是(至少)一次下来。

实际上我倾向于在S​​uiteSetUp中而不是在设置中启动selenium并在测试之间重用驱动程序。我发现这样可以加快测试速度。然后在SuiteTearDown中关闭驱动程序。 嵌套套件可以通过定义自己的套件覆盖父套件SuiteSetUp(和SuiteTearDown)。

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

答案 1 :(得分:0)

感谢您的回复,但我没有在不同的套件中分发测试,而是使用以下内容来切换驱动程序:

SetUp => !|脚本| |开始|我的UI驱动程序类| $ {SERVER} | $ {PORT} | FIREFOX | $ {PAGE_PATH}。$ {PAGE_NAME} | $ {PROXYSERVER} | | debug mode | false | | $ my_UI_DRIVER = | get fixture |

实际测试=> !define TEST_SYSTEM {slim} |脚本|我的API驱动程序类| server ip:port |用户名|密码| |登录| |做点什么...... |

TearDown => |脚本| $ my_UI_DRIVER | |注销| | destroyDriver |

SetUp按UI驱动程序类中的说明打开浏览器。我的Fitnesse测试指向API驱动程序类并执行我的测试。 TearDown指回UI驱动程序类并关闭浏览器。因此,我的测试工作正常,没有任何错误/异常。这样我可以在一次测试中结合API和UI。