Zei*_*zar 3 python import robotframework
我有一个 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
Run Code Online (Sandbox Code Playgroud)
我写了一个名为“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
Run Code Online (Sandbox Code Playgroud)
我的场景文件是“scenario.robot”:
*** Settings ***
Resource ../Keywords/CommonKeywords.robot
*** Test Cases ***
Test Prints
print arg1 class1
Run Code Online (Sandbox Code Playgroud)
这是我的项目结构:
Test
---- Keywords
---- CommonKeywords.robot
---- Scenarios
---- scenario.robot
---- Libs
---- TestClass.py
Run Code Online (Sandbox Code Playgroud)
我将目录更改为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
Run Code Online (Sandbox Code Playgroud)
这就是我想要的,并且在应用 Bryan 的回答后得到了:

您需要设置库的范围。
从机器人框架用户指南(强调我的):
Robot Framework 尝试使测试用例相互独立:默认情况下,它为 每个测试用例创建测试库的新实例。然而,这种行为并不总是可取的,因为有时测试用例应该能够共享一个公共状态。此外,所有库都没有状态,根本不需要创建它们的新实例。
如果您想为每个测试套件创建一次类,您可以像这样设置范围:
class TestClass(object):
ROBOT_LIBRARY_SCOPE = 'TEST SUITE'
def __init__(self, arg1, arg2):
...
Run Code Online (Sandbox Code Playgroud)
如果你想在类在整个测试来看,你可以设置的生活实例只是一次ROBOT_LIBRARY_SCOPE来'GLOBAL'。
| 归档时间: |
|
| 查看次数: |
8280 次 |
| 最近记录: |