运行进程抛出错误"预计至少有1个非关键字参数,得到0"

时间:2017-05-10 23:22:32

标签: process robotframework

我尝试使用"运行流程" Robot Framework脚本中的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.

有谁知道可能导致这种情况的原因以及解决方法?

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

2 个答案:

答案 0 :(得分:1)

arg1arg2包含Robot Framework自身识别的符号时,可能会发生此问题。确保你逃脱反斜杠。

例如,请参阅以下命令:

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

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

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

请注意job\=<name>而不是job=name。不需要在命令及其参数之间添加多个空格。

答案 1 :(得分:0)

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

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

每个间隔相等(例如,在上述情况下为 ~4)。但排除./post.pl arg1 arg2

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