2012-10-02 5 views
10

Google App Engineフレームワークを使用してPython 2.7でアプリケーションを構築しています。 私のアプリケーションをテストするために、nosegaeプラグインを使ってnosetestsを実行するいくつかのテストがあります。私は、次のコマンドでそれらを実行します。私のアプリケーションのモデル層にはnosetestsを介して複数のエンティティグループとトランザクションを実行する際のエラー

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

、私は同じトランザクション内で複数のエンティティグループに影響を与えるいくつかのデータベース操作を実行する必要があります。私は、DBパッケージのrun_in_transaction_options機能を利用して次の操作を行います。 https://developers.google.com/appengine/docs/python/datastore/functions#run_in_transaction

私のテストスイートを実行するとき残念ながら、私は、このようなトランザクションを実行しようと、それらのテストケースでは、次のエラーが表示されます。

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

HRDを有効にすることができるnosetestsにフラグを見つけることができません。

nosetestsからHRDを実行することが可能かどうか、もしそうなら、どのように設定することができますか?

答えて

16

私は非常にあなたがcross group transactionsを使用することができますNDBデシベルから切り替えることを示唆しています。 HRDをシミュレートするため

、あなたはWriting High Replication Datastore testsから、あなたのテストのsetUp関数にこの部分を追加することができます。

# 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) 
関連する問題