【问题标题】:Robot Framework makes two instances from the class instead of oneRobot Framework 从类中创建两个实例而不是一个
【发布时间】:2015-02-22 15:08:28
【问题描述】:

我有一个 python 类:

from robot.api import logger
class TestClass(object):
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2
        logger.info('initialized', also_console=True)

    def print_arg1(self):
        print self.arg1

    def print_arg2(self):
        print self.arg2

我写了一个名为“CommonKeywords.robot”的关键字文件:

*** Settings ***
Library     ../Libs/TestClass.py     arg1   arg2        WITH NAME    class1

*** Keywords ***
print arg1 class1
    class1.print_arg1

print arg2 class1
    class1.print_arg2

而我的场景文件是“scenario.robot”:

*** Settings ***
Resource    ../Keywords/CommonKeywords.robot

*** Test Cases ***
Test Prints
    print arg1 class1

这是我的项目结构:

Test
---- Keywords
     ---- CommonKeywords.robot
---- Scenarios
     ---- scenario.robot
---- Libs
     ---- TestClass.py

我将目录更改为Test/Scenarios 并在命令行中输入pybot scenario.robot。该脚本打印了两个initialized,这意味着它已经对对象进行了两次初始化:

有什么问题??

我这样改变了我的班级:

from robot.api import logger
class TestClass(object):
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
    def __init__(self, arg1, arg2):
        self.arg1 = arg1
        self.arg2 = arg2
        logger.info('initialized', also_console=True)

    def print_arg1(self):
        print self.arg1

    def print_arg2(self):
        print self.arg2

这是我想要的,我在应用 Bryan 的回答后得到了:

【问题讨论】:

  • 我不会重现您的问题。您在哪里打印“初始化”?我什至没有得到它一次。
  • @LaurentBristiel,我添加了一些细节。顺便说一句,布莱恩的回答很棒! :-)

标签: python import robotframework


【解决方案1】:

您需要设置库的范围。

来自Robot Framework User's Guide(强调我的):

Robot Framework 尝试使测试用例独立于每个测试用例 其他:默认情况下,它会为创建新的测试库实例 每个测试用例。然而,这种行为并不总是可取的, 因为有时测试用例应该能够共享一个共同的状态。 此外,所有图书馆都没有状态并创建新的 根本不需要它们的实例。

如果您想让每个测试套件创建一次类,您可以像这样设置范围:

class TestClass(object):

    ROBOT_LIBRARY_SCOPE = 'TEST SUITE'

    def __init__(self, arg1, arg2):
        ...

如果您希望该类在整个测试运行期间只实例化一次,您可以将 ROBOT_LIBRARY_SCOPE 设置为 'GLOBAL'

【讨论】:

  • 谢谢,GLOBAL 选项解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
相关资源
最近更新 更多