您好,我正在使用机器人框架对网站进行自动化测试,上图是 RIDE 中的测试结构:
- test:一个测试套件文件夹,我这里导入资源文件,在文件夹下的“ init.robot ”
- Sub1:子测试套件,不导入任何内容
- 测试:一个测试用例
我的问题是:在测试用例“test”中,机器人无法识别“Test”测试套件文件夹中导入的关键字,因为会有更多的子测试套件,如sub2,sub3,我如何在一个地方导入资源? 我不想在每个测试套件中导入资源文件,有没有办法做到这一点?
您好,我正在使用机器人框架对网站进行自动化测试,上图是 RIDE 中的测试结构:
我的问题是:在测试用例“test”中,机器人无法识别“Test”测试套件文件夹中导入的关键字,因为会有更多的子测试套件,如sub2,sub3,我如何在一个地方导入资源? 我不想在每个测试套件中导入资源文件,有没有办法做到这一点?
您可以链接导入。下面是一个这样的链和重用的例子。在这个例子中,我们有一个resources.robot
导入所有不同文件的单一sub*.robot
文件。这是导入这些的唯一文件。
然后有两个testcases*.robot
文件继续导入resources.robot
并能够访问sub*.robot
关键字的内容。
资源.机器人
*** Settings ***
Resource ../resources/sub1.robot
Resource ../resources/sub2.robot
Resource ../resources/sub1.robot
testcases1.robot
*** Settings ***
Resource ../resources/resources.robot
*** Test Cases ***
TC
No Operation
testcases2.robot
*** Settings ***
Resource ../resources/resources.robot
*** Test Cases ***
TC
No Operation
正如评论中所讨论的,文件中导入的任何关键字在该__init__.robot
文件之外均不可用。这在 Robot Framework User Guide 部分的初始化文件中有清楚的描述。
也就是说,如果不希望在每个套件文件中包含主资源文件,那么另一种方法是在每个套件的开头使用侦听器加载资源文件。可以在此处找到有关侦听器的文档:Docs
一个新的例子:
添加资源监听器.py
from robot.libraries.BuiltIn import BuiltIn
class AddResourceListener(object):
ROBOT_LISTENER_API_VERSION = 2
def __init__(self):
pass
def start_suite(self, name, attributes):
BuiltIn().import_resource('${EXECDIR}/resource.robot')
资源机器人
*** Keywords ***
Resource Keyword
Log "Keyword Executed from Resource File"
测试用例机器人
*** Test Cases ***
TC
Resource Keyword
然后使用附加参数运行您的常规机器人命令,--listener AddResourceListener.py
无论是否导入关键字,您都可以使用该关键字。