2017-10-15 4 views
0

を提起テストのpython asyncioコルーチンは、私は、プラグインasyncio pytestと、次のメソッドをテストしようとしています例外TypeError

class TestController(object): 

    @pytest.mark.asyncio 
    async def test_get_item(self): 

     controller = Controller() 
     item = await controller.get_item('item-1') 
     assert item.get('item_id') == 'item-1' 
を私は item = await self.item_collection.find_one({'item_id': item_id})で検定pを待つを削除した場合

item = await self.item_collection.find_one({'item_id': item_id}) 
    TypeError: object dict can't be used in 'await' expression 

このテストでは、次のエラーが発生します私はこのメソッドをそのままテストする方法はありますか?

+0

'find_one'を嘲笑していますか? – dirn

+0

こんにちは@dirn、私は順番にMongoMockを使用してjsonの備品とpytest - mongodbプラグインを使用しています。模倣されたモンゴルのコレクションは期待どおりに動作します、残念私はそれを残しました。 –

+1

MongoMockがasyncioを理解しているように見えません。コルーチンではなく、通常のメソッドを持つコレクションを定義します。どんなドライバーを使っていますか?モーター?おそらく、それを模倣できるライブラリを探すか、それを自分で処理する必要があります。 – dirn

答えて

0

コメントで述べたように、mongomockはasyncioでうまく動作しません。私は、asyncio呼び出しのためにmongodbモーターで動作するパッケージを作成しました:https://github.com/xzased/pytest-async-mongodb

関連する問題