> Il giorno 7 ago 2019, alle ore 08:08, Karim <lemieli...@gmail.com> ha scritto:
> 
> Salve lista, stavo per scrivere su telegram, ma poi mi sono detto, naah... ed 
> eccomi qui
> 
> Sto cercando di capire come posso mocckare un decoratore di una view, in 
> particolare devo decorare un metodo di una view in django
> 
> class MyNiceClassView:
> 
>     @decorator_to_mock
>     def post(...):
> 
> Ora, io devo testare la mia post, soltanto che il mio decoratore fa alcuni 
> test che vorrei semplicemente evitare. Dato che python carica i moduli solo 
> una volta, una volta che io faccio:
> 
> my_view = MyNiceClassView.as_view()
> 
> la `my_view` ora e' gia' wrappata dal decoratore.
> 
> Cercando su stack overflow, una soluzione suggerita e' quella di 
> 
> 1) importarsi il modulo
>         from app import modulo
> 2) monkey patchare il decorator con un decorator scemo nel modulo importato
>       modulo.decoratore = decoratore_scemo
> 3) importarsi la view da testare.
>       from app.modulo import ViewDaTestare
> 4) testare la view
> 
> Ora, questo processo funziona, se non fai nessuna patch e/o non carichi nulla 
> prima della monkey patch. Inoltre se il decorator e' gia' caricato da altri 
> test tutto va a farsi benedire perche' python importa solamente una volta.
> 
> Avete dei suggerimenti su come fare una bella e pulita mocckata del decorator?


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. 

Ciao

G
> 
> Ciao
> 
> 
> -- 
> Karim N. Gorjux
> _______________________________________________
> 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

Rispondere a