0

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

4

0 回答 0