导入带有可变参数的机器人库

时间:2014-12-18 08:59:18

标签: testing robotframework

我有一个在python(myLibrary.py)中实现的Robot库,需要使用可变数量的参数(例如fileNames)进行初始化:

class myLibrary:
    def __init__(self, *files):

我有一个Robot关键字文件(myKeywords.txt),它使用的是python库:

*** Settings ***
Library           myLibrary.py    ../folder1/fileA    ../fileX

*** Keywords ***
myKeyword
    pass

在这种情况下,我将库参数静态放入myKeywords.txt文件中,我的库正确初始化。

但是我想让myLibrary的这些参数动态化,以便我可以包含来自不同测试套件的myKeywords.txt并用不同的参数初始化它。

我正在寻找一个myKeywords.txt文件,如下所示:

*** Settings ***
Library           myLibrary.py    @{arguments}

我想在我的testsuite中定义@ {arguments}(因为它与testsuite和testsuite不同),并且在导入关键字文件时是这样的:

*** Settings ***
Resource          configuration.txt     // defines @arguments
Resource          myKeywords.txt    @{arguments}

*** Test Cases ***
myTest

1 个答案:

答案 0 :(得分:3)

您无法完全按照自己的意愿行事,因为机器人语法不允许您将变量传递给资源文件。但是,我认为传入 @{arguments}没有任何理由 - myKeywords.txt应该能够直接使用该变量。

此设置适用于我:

configuration.txt:

*** Variables ***
| @{arguments} | file1 | file2

myLibrary.py:

class myLibrary:
    def __init__(self, *files):
        self.files = files

    def getFiles(self):
        return self.files

myKeywords.txt:

*** Settings ***
| # N.B. @{arguments} must be defined before importing this resource file
| Library | myLibrary.py | @{arguments}

*** Keywords ***
| Show files
| | ${files}= | myLibrary.getFiles
| | log to console | the files are ${files}

测试套件:

*** Settings ***
| Resource | configuration.txt
| Resource | myKeywords.txt 

*** Test Cases ***
| Display the list of configuration files
| | Show files