[Python] come fare il mocking di urlopen

Esalando Prassi alessandro.pisa a katamail.com
Ven 18 Ago 2017 14:34:35 CEST


2017-08-18 13:53 GMT+02:00 Pietro <peter.zamb a gmail.com>:
> Ciao Alessandro,
>
> 2017-08-18 12:39 GMT+02:00 Esalando Prassi <alessandro.pisa a katamail.com>:
>> On 18 August 2017 at 11:07, Pietro <peter.zamb a gmail.com> wrote:
>>> Cosa sto sbagliando? come fare a far si che usi mock_urlopen?
>>>
>>> Al momento mi interessa far funzionare i test solo su python3, ma non
>>> sarebbe male riuscire a farli girare anche sotto python2, voi come
>>> fate di solito?
>>
>>
>> Per i test ti consiglio di usare lo schema file://, ad esempio:
>> urlopen('file:///home/ale/.bashrc')
>> Mi sembra la soluzione piu' semplice.
>
> Non capisco come: `urlopen('file:///home/ale/.bashrc')` possa essere
> la soluzione per riuscire a fare il mock della funzione urlopen.
> Cosa intendi?
>

Questa e' la risposta a come fate di solito ;)
Di solito invece che passare ad urlopen una URL remota passo il
percorso ad un file.

Questo ti permette di evitare l'uso di mock.patch: a meno di casi
particolari non serve.
Non so se il tuo e' un caso particolare.

>> Se un giorno ti capitasse di usare il modulo requests (che non capisce
>> lo schema file) [cut]
>
> Il mio problema non รจ lo schema file, ma fare il mocking, che da quel
> che capisco viene ignorato...
>

Certo, lo schema e' un problema del modulo requests (che tu non usi).
In ogni caso nel link che ti ho inviato c'e' un esempio funzionante
dell'utilizzo di mock.patch.

Basta che sostituisci 'requests.get' con 'urllib.urlopen' e cambi
qualche dettaglio.

Ciao.
-- 
http://alepisa.blogspot.com
Esalando Prassi


Maggiori informazioni sulla lista Python