如何使用mock验证python中的另一个方法是否调用了一个方法?

2024-06-01 08:03:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的主要目的是测试session是否从commit_proto_zk方法调用。你知道吗

我已经读过 Assert that a method was called in a Python unit test ,但无法理解:

你知道吗动物园管理员.py:

def session(self, flag = ''):
    if flag == 1:
        return True
    return False 

你知道吗esx.py版本

from zooKeeper import session
import sys

class EsxCollector():

    def collectHW(self):
        a1 = self.a()
        b1 = self.b()
        c1 = self.c()
        hwInfo = self.writeProto(a1, b1, c1)
        return hwInfo

    def a(self):
        return 'a'

    def b(self):
        return 'b'

    def c(self):
        return 'c'

    def writeProto(self, a1, b1, c1):
        return '{0} {1} {2}'.format(a1, b1, c1)


    def commit_proto_zk(self, hwInfo):  

        flag = 1
        zkSession = session(flag)

        if not zkSession:
            print "**no session**"
            sys.exit(1)
        else:
            return zkSession
        if isinstance(hwInfo,str):
            print "*****", hwInfo
            return True
        else:
            return False



    def ab(self, l):
        return l*2

def __main__():
    esxCollector = EsxCollector()
    hwInfo = esxCollector.collectHW()
    print esxCollector.commit_proto_zk(hwInfo)

if __name__=='__main__':
    __main__()

Tags: selfreturnifsessiondefa1b1proto
1条回答
网友
1楼 · 发布于 2024-06-01 08:03:15

可以使用inspect模块获取函数的调用堆栈。你知道吗

import inspect
def getCallingFunc():
    fnName = inspect.stack()[1][3]
    return fnName 
def func():
    return getCallingFunc()

print func()

输出:

func

就你而言

def session(self, flag = ''):
    import inspect
    print "The calling function is ", inspect.stack()[1][3]
    if flag == 1:
        return True
    return False 

相关问题 更多 >