Ciao, se ho capito bene quello che vuoi fare hai bisogno che il decoratore abbia uno o più parametri valorizzati in base all'enviroment test/non test. Una cosa del genere puoi farla con functools.partial, partendo dall'esempio di Matteo:
from functools import partial from eventuale_modulo_config import landscape from mocks import collaboratori as collaboratori_mock from validators import collaboratori def decoratore_generic(func, collaboratori): def inner(*args, **kwargs): ... return inner if landscape == "TEST": decoratore = partial(decoratore_generic, collaboratori_mock) else: decoratore = partial(decoratore_generic, collaboratori) @decoratore() def func1(): pass Fede Il giorno ven 2 ott 2020 alle ore 17:12 Federico Fissore <feder...@fsfe.org> ha scritto: > Matteo Scarpa wrote on 02/10/20 16:30: > > Lo puoi fare scrivendo una cosa tipo: > > > > def decoratore(func, collaboratori): > > def inner(*args, **kwargs): > > ... > > return inner > > > > @decoratore(collaboratore1) > > def func1(): > > pass > > > > Spero di essere stato chiaro. Se vuoi vedere cose piú avanzate > > suggerisco di dare una sbirciata al sorgente di Flask che fa proprio > > queste cose. > > > > Ti ringrazio Matteo, darò un'occhiata ai sorgenti di Flask > > La mia idea era di evitare di passare tutti i collaboratori ogni volta > che aggiungo il decoratore: l'unico modo che conosco per farlo è > definirli a livello di modulo, quindi in fase di testing diventa poi > difficile passare al decoratore un collaboratore finto o mocckato, a > meno di fare monkey patching > > federico > _______________________________________________ > Python mailing list > Python@lists.python.it > https://lists.python.it/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python