嗨,我正在使用机器人框架来自动测试网站,上面的图片是RIDE中的测试结构:
我的问题是:在测试用例" test"中,机器人无法识别在"测试"中导入的关键字。测试套件文件夹,因为会有更多的子测试套件,比如sub2,sub3,如何在一个地方导入资源?我不想在每个测试套件中导入资源文件,有没有办法做到这一点?
答案 0 :(得分:2)
您可以链接导入。以下是此类链和重用的示例。在此示例中,我们有一个resources.robot
导入所有不同的sub*.robot
文件。这是导入这些文件的唯一文件。
然后有两个testcases*.robot
文件继续导入resources.robot
,并且能够访问sub*.robot
个关键字的内容。
<强> resources.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
文件中导入的任何关键字在该文件之外都不可用。 “{3}}上的机器人框架用户指南”部分对此进行了清晰描述。
也就是说,如果在每个套件文件中包含主资源文件的努力是不合需要的,那么另一种方法是在每个套件的开头使用监听器加载资源文件。有关听众的文档,请访问:Initialization files
一个新的例子:
<强> AddResourceListener.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')
<强> resource.robot 强>
*** Keywords ***
Resource Keyword
Log "Keyword Executed from Resource File"
<强> TestCase.robot 强>
*** Test Cases ***
TC
Resource Keyword
然后使用附加参数--listener AddResourceListener.py
运行常规机器人命令,无论是否导入,您都可以使用该关键字。