Skip to main content

Aioboto3 Pytest with Moto

Project description

aioboto3 mocking with Pytest and Moto

This is a Pytest plugin that sets up a Moto background service and patch the aioboto3 session to forward all calls to it. This is designed to work against any calls that create an aiobotocore3.Session() or botocore3.Session() automatically. This means you should not have to change any implementation code for how you are managing the aioboto3 Session.

Most of the code for this came from the aioboto3 tests themselves at https://github.com/terrycain/aioboto3/blob/92a7a9b8a32615ab6a9ea51ef360475ede94bb1f/tests/mock_server.py. Divergence in this gist:

  • Only initializes a moto server for S3
  • Includes a sustainable pattern for adding additional AWS mocked services
  • Fully type-hinted

Running the example test

  • Poetry 1.6+
  • Python 3.10+ (although probably Python 3.7+ will work)
poetry install
poetry run pytest

Example output:

=========================================================================================================== test session starts ===========================================================================================================
platform darwin -- Python 3.11.6, pytest-7.4.3, pluggy-1.3.0
rootdir: /Users/phillip/pytest-aioboto3
configfile: pyproject.toml
testpaths: tests
plugins: asyncio-0.21.1, aioboto3-0.1.0
asyncio: mode=Mode.AUTO
collected 1 item

tests/test_s3.py .                                                                                                                                                                                                                  [100%]

============================================================================================================ 1 passed in 0.94s ============================================================================================================

Installation

pip install pytest-aioboto3

Usage

Inject the included aioboto3_s3_client fixture:

async def test_aio_aws_bucket_access(aioboto3_s3_client: S3Client) -> None:
    resp = await aioboto3_s3_client.list_buckets()
    ...

Or create a new Session yourself by injecting the moto_patch_session fixture:

async def test_some_s3_thing(moto_patch_session: None) -> None:
    session = aioboto3.Session(region_name="us-east-1")
    async with session.client("s3", region_name="us-east-1") as client:  # type: S3Client
        yield client

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_aioboto3-0.6.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_aioboto3-0.6.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file pytest_aioboto3-0.6.0.tar.gz.

File metadata

  • Download URL: pytest_aioboto3-0.6.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: poetry/2.0.1 CPython/3.10.16 Linux/6.8.0-1017-azure

File hashes

Hashes for pytest_aioboto3-0.6.0.tar.gz
Algorithm Hash digest
SHA256 21c787b393a811d0773d755f762c07a5078d9b648e2b8bc73eb67763dd8b3d5c
MD5 3b6a56b001b9f6cc4e9a7470caeb7913
BLAKE2b-256 9a7b340d045faed9b7579ff0cb7cf35c485bbe4b06702a17b00efa7ac97fdfaa

See more details on using hashes here.

File details

Details for the file pytest_aioboto3-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_aioboto3-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: poetry/2.0.1 CPython/3.10.16 Linux/6.8.0-1017-azure

File hashes

Hashes for pytest_aioboto3-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4657e1e9a3fa8b3eaf1d216dbfae9ce436e2fcfb1931987408d2d37788bf443e
MD5 7e33cd83315e4cd700bc30d474445f4d
BLAKE2b-256 c1a3dbe02c69ffab277a5175568d3ab11ea5719e2746cac1c6b36ea18b201bba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page