[Python] [TDD] Mock di un decoratore
Karim
lemieliste a gmail.com
Gio 8 Ago 2019 07:07:02 CEST
On Thu, Aug 8, 2019 at 12:52 AM Giovanni Porcari <
giovanni.porcari a softwell.it> wrote:
> ...
> Potresti provare prima di eseguire il test a verifica re in sys.modules.
> Se il tuo modulo non c’è lo importi e poi fai la patch. Altrimenti fai la
> patch sul modulo importato.
>
> Non so se può funzionare ma è la sola cosa che mi viene in mente quando
> devi alterare moduli già importati.
>
Grazie Giovanni per la risposta.
Ho provato a fare un po' di prove per patchare il decoratore ed e'
abbastanza frustrante.
Questa e' una soluzione molto semplice.
from path_dove_si_trova_il_modulo import modulo as my_modulo
@patch("path_dove_si_trova_il_decoratore", lambda f:f)
def test_che_bypassa_il_decoratore(self):
reload(my_modulo)
# qui aggiungo altri eventuali patch che stanno nel contesto di
"my_modulo"
# a questo punto posso usare il modulo e fare i test
patch.stopall()
reload(my_modulo)
Non e' proprio pythonic, ma funziona, il problema e' che ti limita di
parecchio ad usare il decoratore, in quanto il reload del modulo avviene
nel test.
Ho provato a spostare in setUp o ad usare una funzione _privata che esegue
il test, ma ho dovuto smettere perche' ci perdevo troppo tempo.
Ciao e grazie ancora.
--
Karim N. Gorjux
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20190808/0f59096f/attachment.html>
Maggiori informazioni sulla lista
Python