Comment écrire du code de test pour évaluer les décorateurs Python. S'il vous plaît laissez-moi savoir s'il existe une meilleure façon.
Avec le décorateur hoge, 1 est ajouté à la valeur de retour.
def hoge(func):
@functools.wraps(func)
def wrapper(n):
return func(n) + 1
return wrapper
@hoge
def sample(n):
return n * 2
if __name__ == '__main__':
assert sample(3) == 7
Le décorateur lui-même peut être évalué comme suit (ʻANY_VALUE` peut être n'importe quoi):
assert hoge(lambda n: 6)(ANY_VALUE) == 7
Le décorateur hoge suivant ajoute la valeur spécifiée dans l'argument du décorateur à la valeur de retour.
def hoge(m):
def decorator(func):
@functools.wraps(func)
def wrapper(n):
return func(n) + m
return wrapper
return decorator
@hoge(2)
def sample(n):
return n * 2
if __name__ == '__main__':
assert sample(2) == 6
Le décorateur lui-même peut être évalué comme suit.
assert hoge(2)(lambda n: 4)(ANY_VALUE) == 6
Recommended Posts