Das Paket aetest bietet eine API zum Ausführen von dev_appserver für die Verwendung in Tests.
Beispiel für eine Testdatei:
package foo_test import ( "testing" "google.golang.org/appengine/memcache" "google.golang.org/appengine/aetest" ) func TestFoo(t *testing.T) { ctx, done, err := aetest.NewContext() if err != nil { t.Fatal(err) } defer done() it := &memcache.Item{ Key: "some-key", Value: []byte("some-value"), } err = memcache.Set(ctx, it) if err != nil { t.Fatalf("Set err: %v", err) } it, err = memcache.Get(ctx, "some-key") if err != nil { t.Fatalf("Get err: %v; want no error", err) } if g, w := string(it.Value), "some-value" ; g != w { t.Errorf("retrieved Item.Value = %q, want %q", g, w) } }
Die Umgebungsvariable APPENGINE_DEV_APPSERVER gibt den Speicherort der ausführbaren Datei "dev_appserver.py" an, die verwendet werden soll. Wenn kein Wert festgelegt ist, wird der PATH des Systems verwendet.
Variablen
PrepareDevAppserver
var PrepareDevAppserver func() error
PrepareDevAppServer ist ein Hook, der, wenn er gesetzt ist, vor jedem Start von dev_appserver.py aufgerufen wird. Wenn aetest.NewContext vom goapp-Testtool aufgerufen wird, ist dieser Hook nicht erforderlich.
Funktionen
func Login
Login bewirkt, dass die bereitgestellte Anfrage so funktioniert, als wäre sie vom angegebenen Nutzer ausgegeben worden.
func Logout
Logout bewirkt, dass die bereitgestellte Anfrage so funktioniert, als wäre sie von einem abgemeldeten Nutzer ausgegeben worden.
func NewContext
NewContext startet eine Instanz des Entwicklungs-API-Servers und gibt einen Kontext zurück, der alle API-Aufrufe an diesen Server weiterleitet, sowie einen Abschluss, der aufgerufen werden muss, wenn der Kontext nicht mehr benötigt wird.
Instanz
type Instance interface {
// Close kills the child api_server.py process, releasing its resources.
io.Closer
// NewRequest returns an *http.Request associated with this instance.
NewRequest(method, urlStr string, body io.Reader) (*http.Request, error)
}
Instance stellt eine laufende Instanz des Entwicklungs-API-Servers dar.
func NewInstance
NewInstance startet eine laufende Instanz von api_server.py, die für mehrere Testkontexte verwendet werden kann, die alle App Engine-API-Aufrufe an diese Instanz delegieren. Wenn "opts" null ist, werden Standardwerte verwendet.
Optionen
type Options struct {
// AppID specifies the App ID to use during tests.
// By default, "testapp".
AppID string
// StronglyConsistentDatastore is whether the local datastore should be
// strongly consistent. This will diverge from production behaviour.
StronglyConsistentDatastore bool
// SupportDatastoreEmulator is whether use Cloud Datastore Emulator or
// use old SQLite based Datastore backend or use default settings.
SupportDatastoreEmulator *bool
// SuppressDevAppServerLog is whether the dev_appserver running in tests
// should output logs.
SuppressDevAppServerLog bool
// StartupTimeout is a duration to wait for instance startup.
// By default, 15 seconds.
StartupTimeout time.Duration
}
Options wird verwendet, um Optionen beim Erstellen einer Instanz anzugeben.