我有以下文件夹布局
-- Keywords
-- Tests
-- MyTest.robot
-- PythonLibraries
-- MyPythonScript.py
-- Results
当我手动导航到 PythonLibraries 文件夹并运行以下命令时,我的脚本可以正常工作,并且函数可以正常运行,并采用参数“Test123”。
python -c 'import MyPythonScript; MyPythonScript.My_Function();' Test123
我现在尝试使用流程库将其引入到我的 RobotFramework 中的 MyTest.robot 中。我尝试使用“运行进程”和“启动进程”,但没有成功。我知道我需要包含一些配置才能将脚本指向我的 PythonLibraries 文件夹。我还需要能够接受争论,例如。测试123。
${result}= Start Process python cwd=${ROOT}/PythonLibraries -c 'import MyPythonScript; MyPythonScript.MyFunction();' Test123
我需要有关如何编码的语法方面的帮助。在线对此的支持是有限的,除非您只想打印到终端,这对我来说没有太大帮助。任何有关此问题的帮助将不胜感激。
最佳答案
重要的是要记住,对于命令行上的命令,引号是 shell 的要求,而不是 python 的要求。因此,当从 shell 以外的其他地方执行相同的命令行时,您需要使用适当的引用(或根本不使用引用)。
对于机器人,引号是参数之间的空格。换句话说,您不需要像在 shell 中那样使用单引号来告诉 python 命令从哪里开始和结束,这就是两个或更多空格的用途。
在您的情况下,从Start Process
运行的命令是“python”,该命令的参数是“-c”、整个脚本和“Test123”。他们每个人都需要使用机器人“引用”——每个人周围都有空格。
最后,关键字的关键字参数必须位于要运行的命令之后以及非关键字参数之后。
以下内容应该有效。我使用了多行来更容易地查看各个参数
${result}= Start Process
... python
... -c
... import MyPythonScript; MyPythonScript.MyFunction()
... Test123
... cwd=${ROOT}/PythonLibraries
另一种写法是这样的:
${result}= Start Process
... python -c import MyPythonScript; MyPythonScript.MyFunction() Test123
... cwd=${ROOT}/PythonLibraries
关于python - 在 RobotFramework 中使用 Run Process 关键字的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54520474/