如何绕过 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。
我们使用 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。