python - 在 RobotFramework 中使用 Run Process 关键字的语法

标签 python robotframework

我有以下文件夹布局

-- 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/

相关文章:

python - 使用 Python 和 BeautifulSoup 从 XML 文件创建字典

python - 导入错误: cannot import name 'TEMPLATE_CONTEXT_PROCESSORS'

if-statement - 'Else'是保留关键字Robot Robot脚本中的错误

imap - 机器人框架ImapLibrary : 'quoted-printable' is not a text encoding

python - 处理缺失的分类值 ML

python - Beautifulsoup 将字符串转换为 bs4.element 模块的 ResultSet 对象

python - 如何将 python 静态库与我的 C++ 程序链接

nested-loops - Robot Framework 的数据驱动场景

robotframework - 如何使用Robot Framework模拟onblur事件

python - 如何在 robotframework 库中使用 selenium webdriver 方法?