Skip to main content

Pytest plugin for AWS integration tests

Project description

pytest-localstack

PyPI Travis-CI Codecov https://img.shields.io/github/license/mintel/pytest-localstack.svg https://img.shields.io/github/issues/mintel/pytest-localstack.svg https://img.shields.io/github/forks/mintel/pytest-localstack.svg https://img.shields.io/github/stars/mintel/pytest-localstack.svg

pytest-localstack is a plugin for pytest to create AWS integration tests via a Localstack Docker container.

Read The Docs

Requires:

  • pytest >= 3.3.0

  • Docker

Tested against Python >= 3.6.

Features

  • 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.

Example

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

Services

  • apigateway

  • cloudformation

  • cloudwatch

  • dynamodb

  • dynamodbstreams

  • es

  • firehose

  • kinesis

  • lambda

  • logs

  • redshift

  • route53

  • s3

  • ses

  • sns

  • ssm

  • sqs

Installation

$ pip install pytest-localstack

TODO

  • 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.

Change Log

0.3.0 (2019-07-02)

  • Add CloudWatch Logs service.

0.2.0 (2019-03-06)

  • Use botocore to determine default AWS region (will us-east-1 fallback).

  • Replace use of pytest.config with pytest_configure() hook.

0.1.5 (2018-08-17)

  • Fix a bug involving our patched botocore Session trying to access _internal_components and getting _components instead.

0.1.4 (2018-08-03)

  • Fix pinned install requirements conflict between pytest and pluggy.

0.1.3 (2018-07-17)

  • Fix for botocore >= 1.10.58.

0.1.2 (2018-06-22)

  • Broke out LocalstackSession into RunningSession which doesn’t start localstack itself.

0.1.1 (2018-04-23)

  • Fixed bug where patched botocore clients wouldn’t populated the _exceptions attribute.

0.1.0 (2018-03-13)

  • Initial release

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-localstack-0.3.0.tar.gz (980.6 kB view details)

Uploaded Source

Built Distribution

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

pytest_localstack-0.3.0-py2.py3-none-any.whl (37.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pytest-localstack-0.3.0.tar.gz.

File metadata

  • Download URL: pytest-localstack-0.3.0.tar.gz
  • Upload date:
  • Size: 980.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pytest-localstack-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e5850f4ab52e9beeadd8c9cd6cacf67a8056cc09d24ab350a4a74f251124693f
MD5 cf14015be4993149257908904b559c74
BLAKE2b-256 3cbb9ed3a29964d808466ca00544f25ae4e5f655348af4871b9c050527ec8b62

See more details on using hashes here.

File details

Details for the file pytest_localstack-0.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: pytest_localstack-0.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 37.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for pytest_localstack-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7fb155fee466b44f08655e7970983700b94855a5b8f17e010e6cc74d0645ee8b
MD5 32281f9191e2c2d792a5624125f0ef51
BLAKE2b-256 8a0a3d46780985fe9ec178e3d13eaa023b0babcb5a80e37aa1332584fbd9b04a

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