下面是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)传递一个参数,该怎么办?一旦我这样做,我就得到了我不想/不需要返回任何add!的TypeError...But!
示例:
...
def check(self, phase='TEST', duration=0):
<do something>
tc = testcase()
test = traffic(tc)
tc.addSeqPost(test.add)
tc.addSeqPost(test.check(duration=5))发布于 2014-05-15 03:06:50
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.传递另一个类的实例可能不是您想要做的,但它只是一个示例。
希望这能有所帮助!
https://stackoverflow.com/questions/23668554
复制相似问题