0

機能テスト中に MongoDB データベースをセットアップおよび破棄します。

私のモデルの 1 つは GridFS を利用し、そのテストを実行します (セットアップと分解も呼び出します)。という名前のクリーンな空のデータベースから始めたとしますtest_repoapi

  1. python serve.py testing.ini
  2. nosetests -a 'write-file'

2回目にテストを実行すると、次のようになります。

OperationFailure: command SON([('filemd5', ObjectId('518ec7d84b8aa41dec957d3c')), ('root', u'fs')]) failed: need an index on { files_id : 1 , n : 1 }

クライアントを見ると:

> use test_repoapi
switched to db test_repoapi
> show collections
fs.chunks
system.indexes
users

ログは次のとおりです。http://pastebin.com/1adX4svG

タイムスタンプには次の 3 種類があります。

(1)一番上がWebアプリを立ち上げた時のもの

(2) それ以前23:06:27は最初の反復でした

(3) 他のすべては 2 回目の繰り返しでした

ご覧のとおり、データベースを削除するためにコマンドを初期化しました。考えられる 2 つの説明:

(1) Web アプリは、データベースへの 2 つのアクティブな接続を保持します。

(2) ある種の「ロック」により、インデックスが完全に作成されません。見た目fs.filesも再現されていません。

回避策は、Web アプリを停止し、再起動して、テストを実行することです。その後、エラーは表示されません。

ところで、私は Web アプリの ODM として Mongoengine を使用しています。

これについて何か考えはありますか?

4

1 に答える 1