Robot Framework 是有状态的还是无状态的?

Is Robot Framework stateful or stateless?

我认为是无状态的,但具体情况如下:

我需要创建一个关键字库,用于通过 SSH 登录、执行 CLI 并发送 CLI 命令来测试远程服务器。问题是我有大约 60k 个测试用例要模拟,它们在不同的时间以不同的迭代发送命令,所以基本上我至少需要关键字来执行以下操作:

  1. 通过 ssh 连接并打开 CLI
  2. 通过预先存在的 CLI 会话发送命令
  3. 关闭 CLI 并断开连接

我需要这些命令来存储状态,这样我就可以在测试用例开始时调用 keyword1 并存储在不同时间多次调用 keyword2 的会话。我还需要能够存储多个独立会话。

这种问题用Robot可以解决吗?

要直接回答你的问题,可以是。库可以具有控制库保持其状态多长时间的三个范围之一。通过使用 GLOBAL 范围,只会创建一次库实例,并将在测试执行的整个生命周期内保持不变。其他选择为每个测试套件或每个测试用例提供一个新的库实例。

robot framework user guide section on library scopes 开始,支持的范围是:

TEST CASE:为每个测试用例创建一个新实例。可能的套件设置和套件拆卸共享另一个实例。这是默认值。

测试套件: 为每个测试套件创建一个新实例。从测试用例文件创建并包含测试用例的最低级别的测试套件有自己的实例,而更高级别的套件都有自己的实例用于可能的设置和拆卸。

全球: 在整个测试执行过程中只创建一个实例,它被所有测试用例和测试套件共享。从模块创建的库始终是全局的。