【问题标题】:Is Robot Framework stateful or stateless?Robot Framework 是有状态的还是无状态的?
【发布时间】:2015-09-02 09:49:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我从未使用过robotframework,但我知道您可以使用subprocess 做到这一点。如果您想探索替代方案,请告诉我。

标签: python ssh robotframework


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢。但是如果我在一个测试用例中需要多个库实例怎么办?
  • @ewok:为什么需要一个库的多个实例?
  • 因为我需要存储多个 ssh 连接。基本上我需要能够在多个上下文中使用Send Message 关键字。我可能会使用它向 CLI-a 发送消息,然后立即使用它向 CLI-b 发送不同的消息,但我需要能够在整个测试用例中分别访问这些 CLI
  • @ewok:你说的是 ssh 库吗?您可以使用库的单个实例打开多个连接
  • 好的。调用关键字时如何区分它们? here 是我正在尝试做的一个例子。我需要打开 2 个 CLI 会话,并且需要在发送消息时以某种方式区分它们。
猜你喜欢
  • 2012-06-19
  • 2023-04-09
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 2014-05-07
  • 2021-11-07
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多