botocore

Test resource factory for the botocore library.

class pytest_localstack.contrib.botocore.BotocoreTestResourceFactory(localstack_session)[source]

Create botocore clients to interact with a LocalstackSession.

Parameters:localstack_session (LocalstackSession) – The session that this factory should create test resources for.
client(service_name, *args, **kwargs)[source]

Create a botocore client that will use Localstack.

Arguments are the same as botocore.session.Session.create_client().

default_session

Return a default botocore Localstack Session.

Most applications only need one Session.

patch_botocore()[source]

Context manager that will patch botocore to use Localstack.

Since boto3 relies on botocore to perform API calls, this method also effectively patches boto3.

session(*args, **kwargs)[source]

Create a botocore Session that will use Localstack.

Arguments are the same as botocore.session.Session.

class pytest_localstack.contrib.botocore.DefaultCredentialProvider(session=None)[source]

Provide some default credentials for Localstack clients.

load()[source]

Return credentials.

class pytest_localstack.contrib.botocore.LocalstackEndpointResolver(localstack_session, endpoints)[source]

Resolve AWS service endpoints based on a LocalstackSession.

construct_endpoint(service_name, region_name=None)[source]

Resolve an endpoint for a service and region combination.

get_available_endpoints(service_name, partition_name='aws', allow_non_regional=False)[source]

List the endpoint names of a particular partition.

get_available_partitions()[source]

List the partitions available to the endpoint resolver.

valid_regions

Return a list of regions we can resolve endpoints for.

class pytest_localstack.contrib.botocore.Session(localstack_session, *args, **kwargs)[source]

A botocore Session subclass that talks to Localstack.

create_client(*args, **kwargs)[source]

Create a botocore client.

pytest_localstack.contrib.botocore.contribute_to_module(pytest_localstack)[source]

Add patch_fixture() to pytest_localstack.

pytest_localstack.contrib.botocore.contribute_to_session(session)[source]

Add BotocoreTestResourceFactory to LocalstackSession.

pytest_localstack.contrib.botocore.create_credential_resolver()[source]

Create a credentials resolver for Localstack.

pytest_localstack.contrib.botocore.patch_fixture(scope='function', services=None, autouse=False, docker_client=None, region_name=None, kinesis_error_probability=0.0, dynamodb_error_probability=0.0, container_log_level=10, localstack_version='latest', auto_remove=True, pull_image=True, container_name=None, **kwargs)[source]

Create a pytest fixture that temporarially redirects all botocore sessions and clients to a Localstack container.

This is not a fixture! It is a factory to create them.

The fixtures that are created by this function will run a Localstack container and patch botocore to direct traffic there for the duration of the tests.

Since boto3 uses botocore to send requests, boto3 will also be redirected.

Parameters:
  • scope (str, optional) – The pytest scope which this fixture will use. Defaults to "function".
  • services (list, dict, optional) –

    One of

    • A list of AWS service names to start in the Localstack container.
    • A dict of service names to the port they should run on.

    Defaults to all services. Setting this can reduce container startup time and therefore test time.

  • autouse (bool, optional) – If True, automatically use this fixture in applicable tests. Default: False
  • docker_client (DockerClient, optional) – Docker client to run the Localstack container with. Defaults to docker.client.from_env().
  • region_name (str, optional) – Region name to assume. Each Localstack container acts like a single AWS region. Defaults to "us-east-1".
  • kinesis_error_probability (float, optional) – Decimal value between 0.0 (default) and 1.0 to randomly inject ProvisionedThroughputExceededException errors into Kinesis API responses.
  • dynamodb_error_probability (float, optional) – Decimal value between 0.0 (default) and 1.0 to randomly inject ProvisionedThroughputExceededException errors into DynamoDB API responses.
  • container_log_level (int, optional) – The logging level to use for Localstack container logs. Defaults to logging.DEBUG.
  • localstack_version (str, optional) – The version of the Localstack image to use. Defaults to "latest".
  • auto_remove (bool, optional) – If True, delete the Localstack container when it stops. Default: True
  • pull_image (bool, optional) – If True, pull the Localstack image before running it. Default: True
  • container_name (str, optional) – The name for the Localstack container. Defaults to a randomly generated id.
  • **kwargs – Additional kwargs will be passed to the LocalstackSession.
Returns:

A pytest fixture.