使用Robot Framework执行级别设置和拆卸

时间:2019-03-18 08:02:19

标签: robotframework

我知道有export const deleteUser = (id) => async (dispatch, getState, api) => { const res = await api.delete('/user/del/' + id, null) .then(function (res) { if(res.success) { dispatch({ type: DELETE_USER, payload: { id }, state: getState }); } }) .catch(function (err) { return err.response; }); }; // Reducer case DELETE_USER: { const newList = state.filter(e => e.id !== action.payload.id) return newList ; } 将在每个测试用例之前执行,而Test Setup将在每个套件(即每个.robot文件)之前执行。

但是,当我运行Suite Setup命令并运行完所有测试套件后,我正在尝试执行命令级别的安装程序和拆解。

尝试在我的方案目录中包含robot文件,但根本没有被调用。

__init__.robot

我希望能够在开始任何测试之前启动浏览器,然后仅在完成所有测试之后关闭浏览器。

例如,*** Settings *** Resource ../_common/keywords.robot Suite Setup Prepare Browser Suite Teardown Close Browser 应该:

  1. 打开浏览器
  2. 运行robot 1.robot 2.robot测试套件
  3. 运行1.robot测试套件
  4. 关闭浏览器

1 个答案:

答案 0 :(得分:3)

您可以通过为此设置“特殊”套件,然后在运行中首先调用它们来实现。由于SeleniumLibrary具有全局范围,因此在同一运行中的所有后续套件都应该可以访问在第一个中初始化的浏览器。

例如套件“ Startup.robot”将打开浏览器,“ Closing.robot”将关闭浏览器,介于两者之间的任何一个都将使用它:

robot Startup.robot 1.robot 2.robot Closing.robot

当您传递执行目录时,框架会按字母顺序将.robot文件放入其中,因此您可以将这些特殊套件命名为“ 0000_Startup.robot”和“ zzzz_Closing.robot”,以便它们在相应的目录中运行顺序(也就是说,如果您仅使用ascii / latin文件名)。


是的,初始化文件不用于在其他套件之前运行某些东西-它们在那里设置这些其他套件的默认值,这些默认值可以在下游覆盖。 See their description in the documentation.