Robot Framework - 将库函数作为参数传递
Robot Framework - pass library function as parameter
我有一个简单的测试用例,但我无法在我的 testLib.py
中工作。我有:
def free(arg):
print "found arg \"{0}\"".format(arg)
class testLib:
def free_run(self,func,arg):
print "this is free test"
func(arg)
def member_func(self,arg):
print "mem func arg={0}".format(arg)
if __name__ == "__main__":
x = testLib();
x.free_run(free,"hello world")
x.free_run(x.member_func,"free - mem test")
然后在 Robot Framework 测试文件中 mytest.robot 我有:
*** Setting ***
Library MainLib.py
Library testLib.py
*** Test Cases ***
test2
free run free "testing free run"
self run member_func "testing self run"
当我 运行 框架时,我得到:
==============================================================================
test2 | FAIL |
TypeError: 'unicode' object is not callable
知道如何将成员函数和自由函数传递给库吗?
机器人内置的功能无所不能。从机器人的角度来看,"free" 只是一个字符串。您需要将其转换为实际的函数对象。我可以想到几种不同的方法来做到这一点。
如果 free
是关键字,您可以这样定义 free_run
:
from robot.libraries.BuiltIn import BuiltIn
def free_run(self,func,arg):
print "this is free test"
BuiltIn().run_keyword(func, arg)
另一种选择是在 globals() 返回的结果中查找函数名称,如果可以安全地假设 func
指的是全局函数:
def free_run(self,func_name,arg):
print "this is free test"
func = globals()[func_name]
func(arg)
我有一个简单的测试用例,但我无法在我的 testLib.py
中工作。我有:
def free(arg):
print "found arg \"{0}\"".format(arg)
class testLib:
def free_run(self,func,arg):
print "this is free test"
func(arg)
def member_func(self,arg):
print "mem func arg={0}".format(arg)
if __name__ == "__main__":
x = testLib();
x.free_run(free,"hello world")
x.free_run(x.member_func,"free - mem test")
然后在 Robot Framework 测试文件中 mytest.robot 我有:
*** Setting ***
Library MainLib.py
Library testLib.py
*** Test Cases ***
test2
free run free "testing free run"
self run member_func "testing self run"
当我 运行 框架时,我得到:
==============================================================================
test2 | FAIL |
TypeError: 'unicode' object is not callable
知道如何将成员函数和自由函数传递给库吗?
机器人内置的功能无所不能。从机器人的角度来看,"free" 只是一个字符串。您需要将其转换为实际的函数对象。我可以想到几种不同的方法来做到这一点。
如果 free
是关键字,您可以这样定义 free_run
:
from robot.libraries.BuiltIn import BuiltIn
def free_run(self,func,arg):
print "this is free test"
BuiltIn().run_keyword(func, arg)
另一种选择是在 globals() 返回的结果中查找函数名称,如果可以安全地假设 func
指的是全局函数:
def free_run(self,func_name,arg):
print "this is free test"
func = globals()[func_name]
func(arg)