pytest-localstack is a plugin for pytest to create AWS integration tests via a Localstack Docker container.
Requires:
- pytest >= 3.3.0
- Docker
Tested against Python >= 3.6.
- Create pytest fixtures that start and stop a Localstack container.
- Temporarily patch botocore to redirect botocore/boto3 API calls to Localstack container.
- Plugin system to easily extend supports to other AWS client libraries such as aiobotocore.
import boto3
import pytest_localstack
localstack = pytest_localstack.patch_fixture(
services=["s3"], # Limit to the AWS services you need.
scope='module', # Use the same Localstack container for all tests in this module.
autouse=True, # Automatically use this fixture in tests.
)
def test_s3_bucket_creation():
s3 = boto3.resource('s3') # Botocore/boto3 will be patched to use Localstack
assert len(list(s3.buckets.all())) == 0
bucket = s3.Bucket('foobar')
bucket.create()
assert len(list(s3.buckets.all())) == 1
- apigateway
- cloudformation
- cloudwatch
- dynamodb
- dynamodbstreams
- ec2
- es
- firehose
- iam
- kinesis
- lambda
- logs
- redshift
- route53
- s3
- secretsmanager
- ses
- sns
- sqs
- ssm
- stepfunctions
- sts
$ pip install pytest-localstack
- More detailed docs.
- Break Docker container running out of LocalstackSession.
- Make botocore patching more comprehensible.
- Add common test resource fixture factories i.e. S3 buckets, SQS queues, SNS topics, etc.
- Test this works for non-localhost Docker containers.
- Add other client libraries such as aiobotocore.