Re: [Python] Mock response di un api server esterno

2016-10-06 Per discussione Patrick Guido
Resuscito questa discussione perché ho appena visto questo articolo:
https://semaphoreci.com/community/tutorials/testing-python-requests-with-betamax

Non ho avuto modo di leggerlo a fondo, spero possa esservi utile :)

On Sat, Oct 1, 2016 at 10:18 AM Karim  wrote:

>
> 2016-10-01 16:44 GMT+10:00 Marco Giusti :
>
> L'idea di questo tipo di mock è che i test non devono essere
> scritti ma solo "eseguiti", ovvero non volevamo scrivere a
> mano i test ma usare un servizio per effettuare delle
> richieste HTTP e salvare i risultati per poi importarli nel
> mock. Anche senza servizio, scivere uno script che ti salva
> i risultati su di un file, è piuttosto banale.
>
>
> ​Ho capito.
>
> Il mio obiettivo invece e' di avere la base di un risultato da un endpoint
> da modificarlo on the fly facilmente in modo da ricreare nei test i vari
> casi che devo testare.​
>
>
>
> --
> Karim N. Gorjux
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
-- 

Patrick
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-10-01 Per discussione Karim
2016-10-01 16:44 GMT+10:00 Marco Giusti :

> L'idea di questo tipo di mock è che i test non devono essere
> scritti ma solo "eseguiti", ovvero non volevamo scrivere a
> mano i test ma usare un servizio per effettuare delle
> richieste HTTP e salvare i risultati per poi importarli nel
> mock. Anche senza servizio, scivere uno script che ti salva
> i risultati su di un file, è piuttosto banale.
>

​Ho capito.

Il mio obiettivo invece e' di avere la base di un risultato da un endpoint
da modificarlo on the fly facilmente in modo da ricreare nei test i vari
casi che devo testare.​



-- 
Karim N. Gorjux
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-30 Per discussione Marco Giusti
On Fri, Sep 30 2016, Karim wrote:
>2016-09-24 22:43 GMT+10:00 Marco Giusti :
>
>> La seconda soluzione è esattamente la stessa alla quale sei arrivato tu.
>> Mi sono creato un "database" con le fixture e di volta in volta andavo a
>> pescare quella necessarie. Questa soluzione è piuttosto potente ma
>> presenta delle limitazioni. Ne cito due, una dipendente da `responses` e
>> l'altra indipendente dalla libreria che utilizzi.
>>
>> La prima è che `responses` non fà match né sugli header, né sul body.
>> Questo è un peccato perché per esempio per testare l'autenticazione era
>> necessario crearsi un secondo mock. La seconda limitazione è che le
>> richieste devono essere idempotenti, ed questa sembrava essere piuttosto
>> noiosa. Immagino che una possibile sia creare un qualcosa di ibrido.
>>
>
>Per ora ho creato qualcosa che mi permette di usare le fixture (sia da
>stringa che da .json file) e di modificarle on fly come se fosse un
>dictionary. Per ora sembra funzionare, fammi scrivere una ventina di
>test e poi vediamo se e' anche pratico :-)

L'idea di questo tipo di mock è che i test non devono essere
scritti ma solo "eseguiti", ovvero non volevamo scrivere a
mano i test ma usare un servizio per effettuare delle
richieste HTTP e salvare i risultati per poi importarli nel
mock. Anche senza servizio, scivere uno script che ti salva
i risultati su di un file, è piuttosto banale.

Ciao
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-30 Per discussione Karim
2016-09-24 22:43 GMT+10:00 Marco Giusti :

> La seconda soluzione è esattamente la stessa alla quale sei arrivato tu.
> Mi sono creato un "database" con le fixture e di volta in volta andavo a
> pescare quella necessarie. Questa soluzione è piuttosto potente ma
> presenta delle limitazioni. Ne cito due, una dipendente da `responses` e
> l'altra indipendente dalla libreria che utilizzi.
>
> La prima è che `responses` non fà match né sugli header, né sul body.
> Questo è un peccato perché per esempio per testare l'autenticazione era
> necessario crearsi un secondo mock. La seconda limitazione è che le
> richieste devono essere idempotenti, ed questa sembrava essere piuttosto
> noiosa. Immagino che una possibile sia creare un qualcosa di ibrido.
>

​Per ora ho creato qualcosa che mi permette di usare le fixture (sia da
stringa che da .json file) e di modificarle on fly come
se fosse un dictionary. Per ora sembra funzionare, fammi​ scrivere una
ventina di test e poi vediamo se e' anche pratico :-)

​Grazie​



-- 
Karim N. Gorjux
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-24 Per discussione Marco Giusti
On Sat, Sep 24 2016, Karim wrote:
>2016-09-22 16:55 GMT+10:00 Karim :
>
>> Salve lista, voglio creare un sistema per testare delle funzioni che fanno
>> delle chiamate ad un server api.
>>
>>
>Mi rispondo da solo.
>
>Sto creando un sistema di classi che tramite una fixture json e' possibile
>simulare gli endpoints creando la situazione che si vuole emulare.​

Ho avuto la stessa necessità ed sono arrivato a due implementazioni
differenti. Entrambe usano la, secondo il mio modesto parere, ottima
`responses` poiché usavo `requestes`.

Nel primo caso ho cercato di emulare le risposte del server ricreando,
in piccolo e approssimativamente, il servizio web. Trovo che questa
soluzione sia la più macchinosa e flessibile. Il problema maggiore è che
l'affidabilità dei test è tanto maggiore, quanto è fedele la tua
implementazione al servizio.

La seconda soluzione è esattamente la stessa alla quale sei arrivato tu.
Mi sono creato un "database" con le fixture e di volta in volta andavo a
pescare quella necessarie. Questa soluzione è piuttosto potente ma
presenta delle limitazioni. Ne cito due, una dipendente da `responses` e
l'altra indipendente dalla libreria che utilizzi.

La prima è che `responses` non fà match né sugli header, né sul body.
Questo è un peccato perché per esempio per testare l'autenticazione era
necessario crearsi un secondo mock. La seconda limitazione è che le
richieste devono essere idempotenti, ed questa sembrava essere piuttosto
noiosa. Immagino che una possibile sia creare un qualcosa di ibrido.

Ciao
Marco
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-24 Per discussione Marco Santamaria
Il giorno 24 settembre 2016 02:08, Karim  ha scritto:

>
> Sto creando un sistema di classi che tramite una fixture json e' possibile
> simulare gli endpoints creando la situazione che si vuole emulare.​
>
>
Valuta anche https://github.com/kevin1024/vcrpy

Non è per creare reponse su misura, ma in alcuni test può essere comodo

-- 
|_|0|_|
|_|_|0|
|0|0|0|
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-24 Per discussione Carlos Catucci
2016-09-24 2:08 GMT+02:00 Karim :
> Sto creando un sistema di classi che tramite una fixture json e' possibile
> simulare gli endpoints creando la situazione che si vuole emulare.

Esatto! (Quasiasi cosa significhi quel che hai detto :D )

Carlos
-- 
EZLN ... Para Todos Todo ... Nada para nosotros
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Mock response di un api server esterno

2016-09-23 Per discussione Karim
2016-09-22 16:55 GMT+10:00 Karim :

> Salve lista, voglio creare un sistema per testare delle funzioni che fanno
> delle chiamate ad un server api.
>
>
​Mi rispondo da solo.

Sto creando un sistema di classi che tramite una fixture json e' possibile
simulare gli endpoints creando la situazione che si vuole emulare.​


Karim N. Gorjux
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Mock response di un api server esterno

2016-09-21 Per discussione Karim
Salve lista, voglio creare un sistema per testare delle funzioni che fanno
delle chiamate ad un server api.

Le mie esigenze sono di creare agilmente differenti response con piu' o
meno dati restituiti come json. Non ho
bisogno di "mockare" tanti endpoints, giusto 3/4 al momento.

L'idea era di creare una class per ogni endpoints.

Per ogni oggetto che voglio rappresentare creo una class a cui posso
passare kwargs in modo da poter creare
l'oggetto con i fields che voglio.

e.g.

invoice = FactoryInvoice({'Total': 100, 'Contact': 'Name'...})

endpoint = EndPointInvoiceMocked()
endpoint.add(invoice)
endpoint.response   # genera il response con il json della fattura.


Per ora mi e' venuto in mente questo approccio e dovrebbe bastarmi.

Avete suggerimenti?

-- 
Karim N. Gorjux
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python