无法使用使用Python编写的Robot Framework自定义库

时间:2019-02-19 06:09:09

标签: python pycharm robotframework

使用以下函数创建了示例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.

2 个答案:

答案 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

这样,当您或其他任何人引入新库时,无需更改测试开始的方式。您只需要确保将新库的路径添加到参数文件中即可。