Postino: come scrivere file su disco?

Prima o poi ti farai la domanda: come si può leggere o scrivere file su disco quando si utilizza Postman?

La risposta rapida a questa domanda è: non puoi.

Da qui in poi, inizia la risposta a questa domanda e una possibile soluzione che richiederà alcune abilità JavaScript dalla tua parte.

L'app Postman è progettata come client HTTP e funziona più o meno come un browser: puoi visualizzare una pagina, puoi caricare o scaricare un file e questo è tutto. Ovviamente, puoi fare la stessa cosa con Postman, ma è più probabile che tu voglia introdurre un qualche tipo di automazione nelle tue richieste e collezioni.

Presentazione di Newman

Quando si parla di automazione con Postman, è praticamente impossibile muoversi senza usare Newman. Questo è uno strumento CLI associato per Postman che si integra bene con i server CI / CD ed è ideale per scenari in cui non è richiesto o desiderato alcun intervento umano.

Questo tutorial presuppone che tu abbia già una buona conoscenza di come funzionano Postman e Newman. In caso contrario, considera il mio corso online Postman che ti consentirà di essere sempre aggiornato su tutto ciò che devi sapere.

Se non hai mai usato Newman prima, ti consiglio vivamente di ottenere prima un'introduzione a Newman (e implicitamente a NodeJs e npm) perché probabilmente il resto di questo articolo sarà incomprensibile per te.

Il problema

Immaginiamo di avere una collezione Postman che viene già eseguita automaticamente impiegando Newman e un server CI / CD come Jenkins.

Si desidera poter salvare alcuni file sul disco con alcune informazioni dalla richiesta e dalla risposta: ad esempio, salvare il corpo della richiesta e della risposta sul disco.

Buono! Ora il problema è che non è possibile scrivere variabili o altre informazioni sul disco dall'interno di uno script di pre-richiesta o test. Non esiste un'API per supportarlo e tutti gli script che scrivi all'interno di Postman vengono eseguiti in un ambiente sandbox limitato che non ha accesso al disco (per ovvi motivi di sicurezza).

L'approccio

Possiamo aggirare questa limitazione usando il modulo Node.js File System (fs). Scrivi lo script qui sotto all'interno di un file chiamato writeToDisk.js

Aprire un terminale nella cartella in cui è stato salvato lo script ed eseguire il comando seguente:

nodo writeToDisk.js

Fantastico, quindi ora sappiamo come scrivere i file. E fidati di me: se inserisci lo snippet di codice sopra in uno script Postman, fallirà miseramente.

Hacking Newman

Ora probabilmente ti stai chiedendo: sappiamo cosa non possiamo scrivere file da Postman, quindi come collegheremo Newman e lo script che abbiamo appena scritto? Aspetta un secondo e ti svelerò il mistero.

Quando stai probabilmente eseguendo Newman più o meno in questo modo:

newman esegue my-collection.json

Questo lascia poco spazio per "l'hacking". Ma studiando attentamente la documentazione di Newman, potresti trovare un'alternativa all'esecuzione di Newman: puoi eseguire Newman come modulo npm. Quindi sostituire o commentare il contenuto del file writeToDisk.js e inserire quanto segue:

Se questo viene eseguito correttamente, l'output sarà simile a quello seguente:

Esecuzione di Newman come modulo Node.js

Se viene visualizzato un errore del tipo "Errore: impossibile trovare il modulo" newman ", probabilmente il tuo NODE_PATH non è configurato correttamente. Si prega di controllare il seguente link per ottenere questo risolto: https://stackoverflow.com/a/14515868/766177

Se la soluzione sopra è semplicemente troppo avanzata per te, esegui il seguente comando all'interno della tua cartella contenente lo script e riprova:

npm ho Newman

Ottenere i dati necessari

Ora dovremmo dare un'occhiata più da vicino a come ottenere i dati che vogliamo effettivamente scrivere su disco. Qui le cose si complicano un po '.

Per dirla in poche parole, mentre corre, Newman emette un sacco di diversi tipi di eventi a cui possiamo iscriverci. Ad esempio, quando l'evento start indica che l'esecuzione della raccolta è stata avviata. Gli eventi non indicano solo quando è successo qualcosa, ma portano anche alcuni dati aggiuntivi relativi a quell'evento. E questo è esattamente quando possiamo toccare e ottenere i dati di cui abbiamo bisogno.

Sfortunatamente lo script necessario per farlo funzionare, diventa ancora più complicato:

Ma questo ci porterà nella giusta direzione. Ci stiamo iscrivendo all'evento di richiesta che ci fornirà l'oggetto risposta da cui possiamo estrarre il corpo della risposta e registrarlo con console.log. Lo stesso vale per l'evento beforeRequest che ci fornisce il corpo della richiesta.

Mettere tutto insieme

Ora sappiamo come scrivere file su disco e sappiamo come estrarre le informazioni di cui abbiamo bisogno dagli eventi che riceviamo da Newman.

Ora invece di registrare, possiamo semplicemente scrivere i dati su file:

Andare avanti

Successivamente potresti voler generare alcuni nomi di file casuali, in modo da non sovrascrivere ripetutamente gli stessi file. Lo lascerò a te, ma ecco un modo su come farlo:

Grazie per aver continuato con questo articolo fino alla fine. Se ti è piaciuto, lascia un commento, condividi e premilo alcune volte (fino a 50 volte). Aiuterà gli altri a scoprire queste informazioni e forse aiuterà anche qualcun altro.

Seguimi su Medium o YouTube se sei interessato a più tutorial come questo.

Vuoi saperne di più su Postman e Newman?

Non sto solo scrivendo post ma sono anche un istruttore online. Quindi, se sei interessato a saperne di più su Postman / Newman, test, integrazione continua e molto altro, assicurati di controllare il mio corso online su Postman visitando il link qui sotto.

Dato che sei uno studente appassionato e hai approfondito questo articolo, condividerò con te un link con uno sconto generoso.

* Postino: la guida completa (corso online) *