麻烦 运行 python 文件作为 Robot Framework 中的关键字

Trouble running python file as a keyword in Robot Framework

我正在尝试 运行 一个 python 文件作为机器人框架中的关键字。但是,当我 运行 它时,它说找不到关键字。我尝试了以下代码的多种变体,但没有成功。机器人框架和 python 文件都在同一个目录中。我的目标是确定特定字符串是否在 .csv 文件中

机器人框架文件:

*** Settings ***
Library             CheckDataInCSV

*** Test Cases ***
    ${encryption_in_csv}=   CheckDataInCSV.IsDataInCsv  | readings.csv  | C:\Users\me\Downloads
    log   |  ${encryption_in_csv}

Python 文件 CheckDataInCSV.py:

from robot.api.deco import keyword

@keyword("IsDataInCsv")
def IsDataInCsv(text, downloads_path):
    f = open(downloads_path+'readings.csv', 'r')
    file_contents = f.readlines()
    f.close()
    for item in file_contents:
        if text in item:
            return True
        else:
            pass
    return False

我也尝试过不使用 @keyword header 以及仅在没有库的情况下调用关键字:IsDataInCsv 而不是 CheckDataInCSV.IsDataInCsv 以及使用@关键字和函数名称的不同名称。

首先,请确保您的 .robot 文件语法正确。您在代码示例中丢失了 Test Case name

*** Settings ***
Library             CheckDataInCSV

*** Test Cases ***
Test Name What You Want
    ${encryption_in_csv}=   CheckDataInCSV.IsDataInCsv  | readings.csv  | C:\Users\me\Downloads
    log   |  ${encryption_in_csv}

回到你的问题。根据您的代码,只需将 CheckDataInCSV.py 所在的目录路径添加到您的 PYTHONPATH 即可。然后就可以了。

Linux 命令

export PYTHONPATH=$PYTHONPATH:/YOUR_PY_FILE_PATH

关于 *** Setting *** 中的关键字 Library。有两种导入自定义库的方法。

第一种方式就像你的代码。它将在您的 PYTHONPATH.

中搜索您的 python 文件
*** Settings ***
    Library             CheckDataInCSV

另一种方法是像下面的库名称 .py。它将搜索与 .robot 文件的相对位置。你也可以使用绝对位置。

*** Settings ***
    Library             CheckDataInCSV.py