首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当robotframework测试用例创建自定义库类的新实例时传递参数

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

Stack Overflow用户
提问于 2018-07-13 03:02:26
回答 1查看 1.2K关注 0票数 1

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

代码语言:javascript
运行
复制
class ALibrary:
    def __init__(self, name):
        self._name = name
    def get_name(self):
        print "*WARN*" + self._name

在设置中导入此库

代码语言:javascript
运行
复制
*** Settings ***
Library          lib/ALibrary.py LaoWang

默认情况下,它为每个测试用例创建新的测试库实例。

我的理解是,__init__(self, name)在每个测试用例的开头都会被调用,例如:

代码语言:javascript
运行
复制
*** Test Cases ***
Test Case 1
    get name
Test Case 2
    get name

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

做了个测试:

代码语言:javascript
运行
复制
$ 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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-13 06:38:31

因为这个问题是关于测试库范围的,所以我确实想链接到这个主题的机器人框架文档。应该读取的方式是,设置中的库将以相同的方式重新初始化每个测试用例。以下是说明这种行为的一个例子:

ALibrary.py

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
*** 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

在下面的结果中,您可以看到,即使在第一个测试用例中设置了新名称之后,设置初始化中的默认名称也会在第二个测试用例中返回。

代码语言:javascript
运行
复制
==============================================================================
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
==============================================================================   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51317072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档