<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">Salve lista, stavo per scrivere su telegram, ma poi mi sono detto, naah... ed eccomi qui</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Sto cercando di capire come posso mocckare un decoratore di una view, in particolare devo decorare un metodo di una view in django</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">class MyNiceClassView:</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">    @decorator_to_mock</div><div class="gmail_default" style="font-family:verdana,sans-serif">    def post(...):</div><div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">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:</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">my_view = MyNiceClassView.as_view()</div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">la `my_view` ora e' gia' wrappata dal decoratore.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Cercando su stack overflow, una soluzione suggerita e' quella di </div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">1) importarsi il modulo</div><div class="gmail_default" style="font-family:verdana,sans-serif">        from app import modulo</div><div class="gmail_default" style="font-family:verdana,sans-serif">2) monkey patchare il decorator con un decorator scemo nel modulo importato</div></div><div class="gmail_default" style="font-family:verdana,sans-serif">      modulo.decoratore = decoratore_scemo</div><div><div class="gmail_default" style="font-family:verdana,sans-serif">3) importarsi la view da testare.</div><div class="gmail_default" style="font-family:verdana,sans-serif">      from app.modulo import ViewDaTestare</div><div class="gmail_default" style="font-family:verdana,sans-serif">4) testare la view</div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">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.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">Avete dei suggerimenti su come fare una bella e pulita mocckata del decorator?</div><br></div><div><div class="gmail_default" style="font-family:verdana,sans-serif">Ciao</div><br></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Karim N. Gorjux<br></div></div></div>