如何绕过 Fitnesse SetUp/TearDown 进行个人测试?

How to bypass Fitnesse SetUp/TearDown for an individual test?

我们使用 Selenium 和 Fitnesse 进行 UI 测试,我们打开 Firefox 并执行所有 UI 相关操作 - 单击、填充字段、按下按钮等。

作为我们当前测试框架的一部分,FitnesseRoot 已将 SetUp/TearDown 定义为 open/destroy 浏览器实例。所有套件和测试(大约 300 个)都使用 SetUp/TearDown 作为 UI 测试的一部分。

我正在尝试用 API 测试的新装置替换我们的一个简单测试,因为 API 测试比 UI 测试快得多。测试本身工作正常,但这里的问题是,即使我的 REST fixture 不需要浏览器实例,SetUp 会打开它并且 TearDown 会尝试关闭它,但是 returns 一个异常(因为执行点下的测试API 驱动程序 class,而 TearDown 中的方法属于 UI 驱动程序 class)。

我无法删除 SetUp/TearDown,因为它会影响 300 个测试用例,如上所述。有什么方法可以阻止一项特定测试使用 SetUp/TearDown?还是将TearDown指向UI Driver Class,让测试不抛出异常?

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       |

我倾向于将我的测试组织成套件:例如前端和后端套件。前端获得启动 selenium 的设置,后端则没有。所以设置不是在根级别,而是(至少)一级。

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

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

感谢您的回复,但我没有在不同的套件中分发测试,而是使用以下方法切换 drivers:

设置 => !|脚本| |开始|我的 UI driver class|${SERVER}|${PORT}|FIREFOX|${PAGE_PATH}.${PAGE_NAME}|${‌代理服务器}| |调试模式|false | |$my_UI_DRIVER= |获取夹具|

实际测试=> !define TEST_SYSTEM {苗条} |脚本 |我的 API driver class |服务器 ip:port |用户名 |密码| |登入 | |做点什么...|

拆解 => |脚本| $my_UI_DRIVER | |注销| |destroyDriver |

SetUp 打开浏览器,如 UI driver class 中所述。我的 Fitnesse 测试指向 API driver class 并执行我的测试。 TearDown 指向 UI driver class 并关闭浏览器。因此,我的测试在没有任何 errors/exceptions 的情况下工作正常。这样我就可以在一个测试中结合使用 API 和 UI。