无法使用已使用Python编写的Robot Framework自定义库
使用如下函数创建了一个示例Python脚本(Elements.py):无法使用已使用Python编写的Robot Framework自定义库,python,pycharm,robotframework,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 Ap
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 strings”的关键字”的错误。即使我已将自定义库导入其中
错误消息:
[ 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.
我总是必须使用相对路径,除非该文件与我的测试用例位于同一目录中,并且基于错误,您的文件看起来不是 因此,在您的情况下,它看起来类似于以下内容(不完全是这样,因为我不知道Elements.py位于何处):
希望这有帮助 如果您不想在所有robot文件中包含相对路径,另一个选项是在启动测试时使用
--pythonpath
-P、 --蟒蛇
要添加到模块搜索路径的其他位置
这样您就可以:
Library Elements.py
在您的代码中,您必须像这样启动它:
robot --pythonpath C:/Users/ramana.gouda/PycharmProjects/SafeMobile/ Test_Suite/TestCase_346.robot
从SafeMobile文件夹
您可以更进一步,创建一个可以收集所有路径设置的。例如
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
这样,当您或其他人导入新库时,就不需要更改测试的启动方式。您只需确保将新库的路径添加到参数文件中。尝试过,但这是一个棘手的问题。我已经用同样的方法做了3-4个小时,它没有工作,现在工作:)谢谢你的时间!有没有办法将自定义库永久添加到pythonpath?就像我们添加其他外部库一样。@Sameem外部库安装在
Python\Python37\site packages
文件夹下。如果在这里包含库源代码,那么python应该像其他代码一样找到它。另一种方法是用库的路径更新PYTHONPATH env变量,Linux上也应该有同样的答案。就我个人而言,我更喜欢这里的命令行参数,因为它是可移植的,并且对于多个开发人员来说,没有必要在每台机器上设置PYTHONPATH。明白了。谢谢
robot --argumentfile custom_libraries.txt Test_Suite/TestCase_346.robot