Re: [Python] Mock response di un api server esterno
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 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
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-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
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
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 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-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
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