使用以下函数创建了示例Python脚本(Elements.py):
from robot.api.deco import keyword
@keyword("join two strings")
def join_two_strings(arg1, arg2):
return arg1 + " " + arg2
然后我已将“库”导入到Robot Framework脚本(.robot文件)中。
*** Settings ***
Library AppiumLibrary
Library Selenium2Library
Library BuiltIn
#Here is the import of Custom Lib
Library Elements.py
*** Variable ***
*** Test Cases ***
Example that calls a Python keyword
${result}= join two strings hello world
Should be equal ${result} hello world
在脚本上运行后,出现错误,例如“找不到名称为'join two string'的关键字”。即使我已经导入了自定义库。
错误消息:
[ ERROR ] Error in file C:\Users\ramana.gouda\PycharmProjects\SafeMobile\Test_Suite\TestCase_346.robot: Test library 'Elements.py' does not exist.
TestCase 346 :: Creating internal cases using device
Example that calls a Python keyword | FAIL |
No keyword with name 'join two strings' found.
答案 0 :(得分:4)
我总是必须使用相对路径,除非该文件与我的测试用例位于同一目录,并且基于错误,看起来好像不是你的。
因此,在您的情况下,它将类似于以下内容(不完全是这样,因为我不知道Elements.py的位置):
Library ../../SafeMobile/Elements.py
希望这会有所帮助!
答案 1 :(得分:1)
如果您不想在所有机械手文件中都包含相对路径,则另一种选择是在开始测试时使用--pythonpath
command line argument。
-P,--pythonpath
要添加到模块搜索路径的其他位置。
这样,您可以:
Library Elements.py
在您的代码中启动,就像这样:
robot --pythonpath C:/Users/ramana.gouda/PycharmProjects/SafeMobile/ Test_Suite/TestCase_346.robot
从SafeMobile文件夹中。
您可以进一步创建argument file,在其中可以收集所有路径设置。例如custom_libraries.txt
:
--pythonpath C:/Users/ramana.gouda/PycharmProjects/SafeMobile/
--pythonpath C:/Users/ramana.gouda/PycharmProjects/SafeMobile/libs/
您可以在启动测试时使用它:
robot --argumentfile custom_libraries.txt Test_Suite/TestCase_346.robot
这样,当您或其他任何人引入新库时,无需更改测试开始的方式。您只需要确保将新库的路径添加到参数文件中即可。