Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何判断Python中是否调用了函数?_Python_Testing - Fatal编程技术网

如何判断Python中是否调用了函数?

如何判断Python中是否调用了函数?,python,testing,Python,Testing,我是第一次写单元测试,我很难理解这一点。我有一个方法IsInitialized(),如果另一个方法LoadTable()从未为该对象调用过,则该方法应返回false。如何编写测试方法来验证这一点?您可以在要检查的函数中使用全局变量并将其设置为真: global hasRun hasRun = False def foo(): global hasRun hasRun = True def goop(): global hasRun if hasRun == Fa

我是第一次写单元测试,我很难理解这一点。我有一个方法IsInitialized(),如果另一个方法LoadTable()从未为该对象调用过,则该方法应返回false。如何编写测试方法来验证这一点?

您可以在要检查的函数中使用
全局
变量并将其设置为

global hasRun
hasRun = False
def foo():
    global hasRun
    hasRun = True

def goop():
    global hasRun
    if hasRun == False:
        #Do something if it hasn't run
在代码中:

global hasRun
hasRun = False

def LoadTable():
    global hasRun
    doStuff()
    hasRun = True

def IsInitialized():
    global hasRun
    return hasRun #Returns False if hasRun = False, and vice-versa

您可以在要检查的函数中使用
全局
变量并将其设置为
True

global hasRun
hasRun = False
def foo():
    global hasRun
    hasRun = True

def goop():
    global hasRun
    if hasRun == False:
        #Do something if it hasn't run
在代码中:

global hasRun
hasRun = False

def LoadTable():
    global hasRun
    doStuff()
    hasRun = True

def IsInitialized():
    global hasRun
    return hasRun #Returns False if hasRun = False, and vice-versa

您需要检查对象是否相等,并使用标志指示结果

e、 g


您需要检查对象是否相等,并使用标志指示结果

e、 g


为了简单起见,我会将其作为一个属性:

class with_called_attribute:
    def __init__(self, func):
        self.func = func
        self.called = False

    def __call__(self, *args, **kwargs):
        self.called = True
        self.func(*args, **kwargs)

@with_called_attribute
def run_some_thing(*args, **kwargs):
    print("You called with:", *args, **kwargs)

run_some_thing.called
#>>> False

run_some_thing(10)
#>>> You called with: 10

run_some_thing.called
#>>> True

为了简单起见,我会将其作为一个属性:

class with_called_attribute:
    def __init__(self, func):
        self.func = func
        self.called = False

    def __call__(self, *args, **kwargs):
        self.called = True
        self.func(*args, **kwargs)

@with_called_attribute
def run_some_thing(*args, **kwargs):
    print("You called with:", *args, **kwargs)

run_some_thing.called
#>>> False

run_some_thing(10)
#>>> You called with: 10

run_some_thing.called
#>>> True

没有变量(bool)?设置标志变量以记录案例。没有变量(bool)?设置标志变量以记录案例。