I test delle unità locali vengono eseguiti all'interno del tuo ambiente senza accedere ai componenti remoti. App Engine fornisce utilità di test che utilizzano le implementazioni locali di Cloud Datastore e altri servizi App Engine.
I servizi di sviluppo simulano il comportamento del servizio reale a livello locale test. Ad esempio, l'utilizzo del datastore mostrato in Scrivere test di Cloud Datastore e Memcache ti consente di testare il codice del datastore senza effettuare richieste al datastore reale. Qualsiasi l'entità archiviata durante un test delle unità del datastore viene archiviata in locale e viene eliminata dopo l'esecuzione del test. Puoi eseguire test rapidi e di piccole dimensioni senza alcuna dipendenza dal e lo stesso datastore.
Questo documento descrive come scrivere test di unità per i servizi App Engine locali utilizzando il pacchetto di test Go.
Pacchetto Go Testing
Puoi automatizzare il download, la creazione e il test dei pacchetti Go utilizzando
lo strumento goapp
. goapp
fa parte di
SDK App Engine per Go.
La combinazione del comando goapp test
e del pacchetto Gotesting
standard può essere utilizzata per eseguire test di unità sul codice dell'applicazione.
Per informazioni sui test con Go, consulta la sezione Test di Come scrivere
Go Code e il pacchetto di test
riferimento.
I test di unità sono contenuti in file che terminano con il suffisso _test.go
. Ad esempio, supponiamo che tu voglia testare una funzione denominata composeNewsletter
che restituisce un *mail.Message
. Il seguente file newsletter_test.go
mostra
un semplice test per quella funzione:
Questo test viene richiamato utilizzando il comando goapp test
dall'interno
directory del pacchetto:
goapp test
Lo strumento goapp
si trova nella directory root dell'SDK di App Engine. Me
ti consigliamo di inserire questa directory nella variabile PATH
del sistema per fare
semplificare l'esecuzione dei test.
Pacchetto aetest
Molte chiamate di funzione ai servizi App Engine richiedono un context.Context
come argomento. Il pacchetto appengine/aetest
fornito con l'SDK consente di creare un context.Context
falso per eseguire i test utilizzando i servizi forniti nell'ambiente di sviluppo.
La chiamata a aetest.NewContext
inizierà dev_appserver.py
in un processo secondario,
che verrà utilizzato per gestire le chiamate API durante il test. Questo sottoprocesso
arresta con la chiamata a done
.
Per un maggiore controllo sull'istanza sottostante, puoi utilizzare aetest.NewInstance
. In questo modo puoi creare più contesti e associarli agli oggetti http.Request
.
Per ulteriori informazioni, consulta la documentazione di riferimento del pacchetto aetest.
Scrittura di test di Cloud Datastore e Memcache
Testare un codice che utilizza datastore o memcache è semplice una volta creato un
context.Context
con il pacchetto aetest
: nella chiamata di prova
aetest.NewContext
per creare un contesto da passare alla funzione sottoposta a test.
L'applicazione di dimostrazione transaction
nell'SDK contiene un esempio di strutturazione del codice per consentirne la testabilità e di come testare il codice che utilizza il datastore:
Questo test può essere eseguito utilizzando il comando goapp test
:
goapp test ./demos/transaction
I test per memcache seguono lo stesso schema: configura lo stato iniziale di memcache nel test, esegui la funzione in test e verifica che la funzione abbia eseguito query/modificato memcache nel modo previsto.