如何在机器人Fram中保持对象状态

2024-06-16 11:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Robot框架相当陌生,我编写了一些关键字,它们调用.py文件中的方法。所有这些Python方法都放在文件llk中的一个类中_机器.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}

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

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

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

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

谢谢。在


Tags: or文件对象方法py机器documentationconnect
1条回答
网友
1楼 · 发布于 2024-06-16 11:27:29

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

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

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

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

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

注意:以上描述来自robot framework user guide中的Test library scope部分。在

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

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

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

^{pr2}$

更完整的例子可以在robot framework user guide"Test library scope"部分找到

相关问题 更多 >