robotframework测试用例创建自定义库类的新实例时传递参数

robotframework测试用例创建自定义库类的新实例时传递参数,robotframework,Robotframework,有一个用Python编写的定制RF库: class ALibrary: def __init__(self, name): self._name = name def get_name(self): print "*WARN*" + self._name 在设置中导入此库 *** Settings *** Library lib/ALibrary.py LaoWang 默认情况下,它为每个测试用例创建测试库的新实例 我的理解是

有一个用Python编写的定制RF库:

class ALibrary:
    def __init__(self, name):
        self._name = name
    def get_name(self):
        print "*WARN*" + self._name
在设置中导入此库

*** Settings ***
Library          lib/ALibrary.py LaoWang
默认情况下,它为每个测试用例创建测试库的新实例

我的理解是,
\uuuuu init\uuuuu(self,name)
在每个测试用例开始时都会被调用,例如:

*** Test Cases ***
Test Case 1
    get name
Test Case 2
    get name
Robotframework应该为
测试用例1
创建一个实例,为
测试用例2
创建另一个实例,但是,我的
初始化(self,name)
需要一个参数,我如何在
***测试用例***
中传递这个参数

做了一个测试:

$ python -m robot test.1.robot
==============================================================================
Test.1
==============================================================================
[ WARN ] LaoWang
Case 1                                                                | PASS |
------------------------------------------------------------------------------
[ WARN ] LaoWang
Case 2                                                                | PASS |
------------------------------------------------------------------------------
Test.1                                                                | PASS |
2 critical tests, 2 passed, 0 failed
2 tests total, 2 passed, 0 failed

两个案例都显示了老王,这是否意味着RF没有在不同的测试案例中创建新实例?

由于这个问题是关于测试库范围的,我确实想链接到关于这个主题的。读取它的方式是,设置中的库以相同的方式为每个测试用例重新初始化。下面是一个说明这种行为的例子:

ALibrary.py

class ALibrary:

    ROBOT_LIBRARY_SCOPE = 'TEST CASE'

    def __init__(self, name):
        self._name = name

    def get_name(self):
        print "*WARN*" + self._name

    def set_name(self, name):
        self._name = name     
ALibrary.robot

*** Settings ***
Library          ALibrary   LaoWang

*** Test Cases ***
Test Case 1
    get name
    set name    New Name
    get name

Test Case 2
    get name
    set name    Another New Name
    get name
在下面的结果中,您可以看到,即使在第一个测试用例中设置了新名称,设置初始化中的默认名称也会在第二个测试用例中返回

==============================================================================
TestProject                                                                   
==============================================================================
TestProject.ALibrary                                                          
==============================================================================
Test Case 1                                                           
[ WARN ] LaoWang
[ WARN ] New Name
| PASS |
------------------------------------------------------------------------------
Test Case 2                                                           
[ WARN ] LaoWang
[ WARN ] Another New Name
| PASS |
------------------------------------------------------------------------------
TestProject.ALibrary                                                  | PASS |
2 critical tests, 2 passed, 0 failed
2 tests total, 2 passed, 0 failed
==============================================================================   

“应该以相同的方式对每个测试用例重新初始化设置中的库。”消除了我的疑问。非常感谢。