【问题标题】:Run Process throws error "expected at least 1 non-keyword argument, got 0"运行进程抛出错误“预计至少有 1 个非关键字参数,得到 0”
【发布时间】:2021-07-05 19:17:53
【问题描述】:

我尝试在 Robot Framework 脚本中使用 Process 库中的“Run Process”关键字来运行 perl 脚本,该脚本的参数位于与当前文件夹具有不同路径的文件夹中。

Run Process  ./post.pl arg1 arg2   shell=True    cwd=/a/b/c

运行时会报错:

Keyword 'Process.Run Process' expected at least 1 non-keyword argument, got 0.

有谁知道这可能是什么原因以及如何解决它?

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 我不知道这是否是唯一的问题,但您似乎在 ./post.plarg1arg2 之间只有一个空格。每个之间需要两个空格。
  • 正如@BryanOakley 所说,这应该如下:Run Process<space><space>./post.pl<space><space>arg1<space><space>arg2<space><space>shell=True<space><space>cwd=/a/b/c
  • 我确实在 post.pl、arg1 和 arg2 之间使用了一个空格,在 shell=True 和 cwd=/a/b/c 之前使用了三个空格。但它仍然会抛出同样的错误。

标签: process robotframework


【解决方案1】:

arg1arg2 包含Robot Framework 本身识别的符号时,可能会出现此问题。确保你用反斜杠转义那些。

例如看下面的命令:

curl <args> "<url>/download?job=<name>"

这将导致“关键字 'Process.Run Process' 预期至少有 1 个非关键字参数,得到 0。”问题是,Robot Framework 认为 = 是一个赋值,所以你需要转义它:

curl <args> "<url>/download?job\=<name>"

注意job\=&lt;name&gt; 而不是job=name。无需在命令及其参数之间添加多个空格。

【讨论】:

    【解决方案2】:

    通常,在这种情况下,问题在于空格 - 正如我在类似情况下所观察到的那样。因此,我遵循的是在机器人框架命令和参数/命令之间保持相同的空格,然后在以下参数 w.r.t 中保持相同。机器人框架命令。

    Run Process    ./post.pl arg1 arg2    shell=True    cwd=/a/b/c
    

    每个间隔相等的空格(例如,在上述情况下约为 4 个)。但不包括./post.pl arg1 arg2

    如果这不能解决,那么通常会注意到那里使用的arg1arg2 的扩展版本。尝试通过直接替换执行,以在您的上下文中获得恰到好处的间距/缩进用法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多