gpt4 book ai didi

python - 如何在机器人框架中保存对象状态

转载 作者:行者123 更新时间:2023-11-28 22:39:19 25 4
gpt4 key购买 nike

我是 Robot Framework 的新手,我写了几个关键字,它们调用 .py 文件中的方法。所有这些 Python 方法都放在文件 llk_machine.py 中的一个类中。

下面是我的测试用例文件:

    *** Settings ***

Variables /repo/user/var_attero.py

Library %{ROBOTREPO}/Lib/LIB_LLK/llk_machine.py WITH NAME class1

*** Keywords ***
CONNECT

[Documentation] Connects to Machine.
${CONNECT_PASS_or_FAIL}= class1.llk_Connect
[Return] ${CONNECT_PASS_or_FAIL}

CONFIGURE_DELAY

[Arguments] ${port_number}=1 ${fixed_delay}=25000
[Documentation] Configure impairment in the active testbed.
${pass_fail_status}= class1.llk_Config_Impair_fixed ${port_number} ${fixed_delay}
[Return] ${pass_fail_status}

llk_Connect 和llk_Config_Impair_fixed 是Python 文件中的两个方法。通过关键字 connect 我正在连接到机器。当我执行这个测试用例时,它执行得很好并通过了。然后当我选择第二个测试用例来配置延迟时,我收到一条错误消息“无法连接机器”。但是我已经通过第一个测试用例连接到机器,当我检查物理时,机器连接到我的电脑。

所以我认为当我选择第二个关键字时另一个对象正在被实例化,并且正在请求到机器的新套接字连接,这显然失败了,因为机器已经在与其他套接字通信并且不能接受另一个连接。

当我同时执行两个测试用例时,它工作得很好。当我一个接一个地分别执行它们时,问题就出现了。

如何防止为每个测试用例创建新对象并且在整个测试周期中只有一个对象。请帮帮我。

谢谢。

最佳答案

默认情况下,机器人会为每个测试用例创建关键字库的新实例,特别是这样测试用例就不会从其他测试用例继承状态。

您可以通过在实现关键字的 Python 文件或类中添加特殊变量来更改此行为。此变量名为 ROBOT_LIBRARY_SCOPE。您可以将其设置为以下文字字符串之一:

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

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

  • "GLOBAL" - 在整个测试执行期间只创建一个实例,并由所有测试用例和测试套件共享。从模块创建的库始终是全局的。

注:以上描述来自Test library scope部分在robot framework user guide .

例如,要在套件中的所有测试之间共享状态,python 文件的顶部可能如下所示:

# llk_machine.py
ROBOT_LIBRARY_SCOPE = "TEST SUITE"
...
def llk_Connect(...):
...

如果您的关键字是与文件同名的类的方法,则应将变量设置为该类的属性

# llk_machine.py
class llk_machine(...):
ROBOT_LIBRARY_SCOPE = "TEST SUITE"
...

可以在 "Test library scope" 中找到更完整的示例节robot framework user guide

关于python - 如何在机器人框架中保存对象状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34906072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com