2012-10-02 33 views
10

Estoy compilando una aplicación con Python 2.7 usando el framework de Google App Engine. Para probar mi aplicación tengo varias pruebas que se ejecutan a través de pruebas de nariz haciendo uso del plugin nosegae. Yo les funcionar con el siguiente comando:Error al ejecutar transacciones con múltiples grupos de entidades a través de nosetests

nosetests --with-gae --gae-lib-root=/usr/local/google_appengine/ -w . -w */test/ -v 

En la capa del modelo de mi solicitud, no tengo la necesidad de ejecutar varias operaciones de bases de datos que afectan a múltiples grupos de entidades dentro de la misma transacción. Hago esto, haciendo uso de la función run_in_transaction_options del paquete db: https://developers.google.com/appengine/docs/python/datastore/functions#run_in_transaction

Por desgracia, cuando se ejecuta mis conjuntos de pruebas, me sale el siguiente error en los casos de prueba que tratan de ejecutar dicha operación:

BadRequestError: transactions on multiple entity groups only allowed with the High Replication datastore

No puedo encontrar ninguna bandera en los exámenes de nariz que permita habilitar el HRD.

Me pregunto si es posible ejecutar HRD desde nosetests y, en caso afirmativo, ¿cómo se puede configurar?

Respuesta

16

te sugeriría altamente que usted cambie de db a NDB, donde se puede utilizar cross group transactions.

para simular el desarrollo de recursos humanos, puede agregar esta parte de la función setUp de sus pruebas, desde Writing High Replication Datastore tests:

# Create a consistency policy that will simulate the High Replication consistency model. 
self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0) 

# Initialize the datastore stub with this policy. 
self.testbed.init_datastore_v3_stub(consistency_policy=self.policy) 
Cuestiones relacionadas