我有以下python代码(有点简化,但确实产生了相同的错误)。
class traffic(object):
def __init__(self, testObj):
try:
<do something>
except AssertionError:
sys.exit (1)
def add(self, phase='TEST'):
<do something>
def check(self, phase='TEST'):
<do something>
class testcase(object):
def __init__(self):
try:
<do something>
except AssertionError:
sys.exit (1)
def addSeqPost(self, cmdObj):
print "add Seq. for POST"
cmdObj(phase='POST')
tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add())
我得到以下TypeError:
Traceback (most recent call last):
File "test.py", line 25, in <module>
tc.addSeqPost(test.add())
File "test.py", line 20, in addSeqPost
cmdObj(phase='POST')
TypeError: 'NoneType' object is not callable
如果我将代码更改为,它可以正常工作,但这不是我想要的:
def addSeqPost(self, cmdObj):
print "add Seq. for POST"
cmdObj.add(phase='POST')
tc.addSeqPost(test())
我想使它更通用,因为test()可以有更多方法,我想传递给tc.addSeqPost(),如tc.addSeqPost(test.check())。
谢谢你。为你的时间和帮助
在alKid的帮助下。
还有一个问题,如果我想用test.check(duration = 5)传递一个参数怎么办?一旦我这样做,我得到了相同的TypeError ...但我不想/需要从添加!!!返回任何东西
示例:
...
def check(self, phase='TEST', duration=0):
<do something>
tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add)
tc.addSeqPost(test.check(duration=5))
答案 0 :(得分:0)
test.add()
不会返回该函数,它会运行该函数并返回返回的值。由于add
没有返回任何内容,因此传递的对象为None
。
tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add)
另外,请记住test.add
需要两个参数。 self
和phase
。你需要传递它们。
def addSeqPost(self, cmdObj):
print "add Seq. for POST"
cmdObj(self, phase='POST') #pass an instance of `testcase` to the function.
传递另一个班级的实例可能不是你想要做的,但它只是一个例子。
希望这有帮助!