我pytest-asyncio
在我目前正在进行的项目中使用。
在这个项目中,我实现了存储库模式和测试,我编写了一个简单的“内存存储库”(即:dict with pk on keys 和entities on values)。此存储库是一个具有异步方法的类,并具有以下方法:
async def update(self, entity: IEntity) -> IEntity:
try:
if entity.id not in self._storage:
raise KeyError()
self._storage[entity.id] = entity
except KeyError:
raise EntityNotFound(
f'Cant found {self._entity_type} with id: {entity.id}',
_id=entity.id,
)
return entity
我有以下测试:
@pytest.mak.asyncio
async def test_delete_nonexistent_sale(self):
with pytest.raises(EntityNotFound) as e:
await self.service.handle({
'sale_id': '93939393939393', 'salesman_id': self.salesman.id,
})
assert 1 == 2
# Ignore this assert for now, Youll understand soon
whereservice.handle
是另一个在第一行有 a 而没有在里面的async
函数。await repository.update(pk)
try/catch
问题是这个通过(显然应该失败)即使使用assert 1==2
. 出于某种原因,我什至不能pdb/ipdb.set_trace()
在存储库调用之后使用。
Pytest 向我显示此警告:
purchase_system/tests/test_domain/test_services/test_delete_sale.py::TestDeleteSale::test_delete_nonexistent_sale
/home/tamer.cuba/Documents/purchase-system/purchase_system/tests/test_domain/test_services/test_delete_sale.py:102: RuntimeWarning: coroutine 'DeleteSaleService.handle' was never awaited
self.service.handle(
-- Docs: https://docs.pytest.org/en/stable/warnings.html
如何使用 传播测试中的 de 异常pytest-asyncio
?