Je suis en train de tester la méthode suivante avec le pytest asyncio plugin:python test asyncio coroutine avec le plugin pytest-asyncio soulève TypeError
class Controller(object):
async def get_item(self, item_id):
item = await self.item_collection.find_one({'item_id': item_id})
return item
Et j'ai écrit le test suivant:
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'
Ce test soulève l'erreur suivante:
item = await self.item_collection.find_one({'item_id': item_id})
TypeError: object dict can't be used in 'await' expression
Si je supprime l'item = await self.item_collection.find_one({'item_id': item_id})
vous attendent dans le test p ânes, mais comment puis-je tester cette méthode telle qu'elle est?
Vous vous moquez de 'find_one'? – dirn
Salut @dirn, j'utilise le plugin pyest-mongodb avec des fixations json, qui à son tour utilise MongoMock. La collection mongo mockée fonctionne comme prévu, désolé d'avoir laissé tomber ça. –
Il ne semble pas que MongoMock comprenne l'asyncio. Il définit une collection qui a des méthodes régulières, pas des coroutines. Quel pilote utilisez-vous? Moteur? Vous aurez probablement besoin soit de chercher une bibliothèque qui peut se moquer de cela ou gérer vous-même. – dirn