2

我们使用 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 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       |
4

2 回答 2

1

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

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

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

于 2017-02-14T19:12:03.480 回答
0

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

设置 => !|脚本 | |开始| 我的 UI 驱动程序类|${SERVER}|${PORT}|FIREFOX|${PAGE_PATH}.${PAGE_NAME}|${‌​PROXYSERVER}| |调试模式 |false | |$my_UI_DRIVER= |获取夹具|

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

拆解 => |脚本 | $my_UI_DRIVER | |登出 | |destroyDriver |

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

于 2017-02-16T09:53:11.097 回答