Пример #1
0
    async def test_docstring_survives(self):
        async def mytest():
            """This is a docstring"""
            pass

        retryable = utils.async_retry(8, 0)(mytest)

        assert retryable.__doc__ == """This is a docstring"""
Пример #2
0
    async def test_retries_until(self):
        mock_func = mock.Mock(side_effect=[Exception(), "Foo"])
        retryable = utils.async_retry(5, 0)(mock_func)

        x = await retryable()

        assert x == "Foo"
        assert mock_func.call_count == 2
Пример #3
0
    async def test_retries_by_its_self(self):
        mock_func = mock.Mock(side_effect=Exception())
        retryable = utils.async_retry(8, 0)(mock_func)

        retryable()

        await asyncio.sleep(0.1)

        assert mock_func.call_count == 9
Пример #4
0
    async def test_retries_then_raises(self):
        mock_func = mock.Mock(side_effect=Exception("Foo"))
        retryable = utils.async_retry(5, 0)(mock_func)

        with pytest.raises(Exception) as e:
            coro = await retryable()

        assert e.type == Exception
        assert e.value.args == ("Foo", )
        assert mock_func.call_count == 6
Пример #5
0
    async def test_kwargs_work(self):
        async def mytest(mack, *args, **kwargs):
            mack()
            assert args == ("test", "Foo")
            assert kwargs == {"test": "Foo", "baz": "bam"}
            return True

        retryable = utils.async_retry(8, 0)(mytest)
        merk = mock.Mock(side_effect=[Exception(""), 5])

        fut = retryable(merk, "test", "Foo", test="Foo", baz="bam")
        assert await fut

        assert merk.call_count == 2
Пример #6
0
 async def test_returns_success(self):
     mock_func = mock.Mock(return_value="Foo")
     retryable = utils.async_retry(5, 0)(mock_func)
     x = await retryable()
     assert x == "Foo"
     assert mock_func.call_count == 1