假设我有一个位于C:script.py
的python脚本。这是脚本的内容:
def func1(arg1):
print (arg1)
if __name__ == "__main__":
func1(arg1)
现在,我想使用Robot Framework运行这个脚本。我正在考虑做这样的事情:
*** Test Cases ***
Test1
Run Process python C:script.py ${arg1}
但它不起作用。如何运行此脚本并向其传递参数?
我同意@Helio的观点,将python程序作为关键字将是更快、更容易实现的解决方案。在库下的设置部分导入py脚本。
${result}= func1 arg1
这里func1充当一个关键字来做它作为一个函数应该做的任何事情。然后结果变量将捕获输出,然后可以将其记录或打印到控制台。
如果你发布了一个我们可以实验的真实例子,那就更好了:
但它不起作用。
正如您在Run Process的文档中所看到的,您必须重定向流程的输出,这样您才能看到它(如果这是您的问题(。
以下是一个基于您的工作示例:
import sys
arg1 = sys.argv[1] or None
def func1(argument):
print(argument)
if __name__ == "__main__":
func1(arg1)
*** Settings ***
Library Process
*** Test Cases ***
Test1
Run Process python C:/script.py This is my argument to script. stdout=C:/script_output.log
但也许最好的解决方案是将脚本作为关键字。
首先,您必须修改脚本以使用命令行参数,这些参数可以在sys.argv.中找到
例如:
import sys
def func1(arg1):
print (arg1)
if __name__ == "__main__":
func1(sys.argv[1])
接下来,您必须确保script.py
和参数之间有两个或多个空格
Run Process python C:\script.py ${arg1}
当然,您需要定义什么是${arg1}
,而您在示例中没有这样做。
就这么简单:您的python文件,test.py
def printme(x, y):
with open("output.txt", "a") as f:
f.write("n ===> " + x + " / " + y)
你的机器人文件:
*** Settings ***
Library test.py
*** Test Cases ***
Test
printme Hello World second argument
你得到一个文件output.txt,带有:
===>Hello World/第二个参数
你可以有变量,任何你想要的,而不是一个简单的字符串。你可以有几个论点,它们之间至少有两个空格。