Skip to main content

Automatically mocks resources from serverless.yml file.

Project description

pytest-serverless

Mock local resources for serverless framework.

master PyPI Python pytest Licence
Build Status PyPI 3.10.1, 4.6.6, 5.2.4

Installation

pip install pytest-serverless

Your project has to have pytest installed.

What problem it tries to solve?

When building your project with serverless most likely you will create resources like dynamodb tables, sqs queues, sns topics.

During writing tests you will have to mock those in moto.

This pytest plugin tries to automate this process by reading serverless.yml file and create moto mocks of resources for you.

Usage

Assuming your serverless.yml file looks like:

service: my-microservice
resources:
 Resources:
   TableA:
     Type: 'AWS::DynamoDB::Table'
     DeletionPolicy: Delete
     Properties:
       TableName: ${self:service}.my-table
       AttributeDefinitions:
         - AttributeName: id
           AttributeType: S
         - AttributeName: company_id
           AttributeType: S
       KeySchema:
         - AttributeName: id
           KeyType: HASH
       GlobalSecondaryIndexes:
         - IndexName: company_id
           KeySchema:
             - AttributeName: company_id
               KeyType: HASH
           Projection:
             ProjectionType: ALL
           ProvisionedThroughput:
             ReadCapacityUnits: 10
             WriteCapacityUnits: 30
       ProvisionedThroughput:
         ReadCapacityUnits: 10
         WriteCapacityUnits: 30

To start using my-microservice.my-table table in your tests just mark your test with @pytest.mark.usefixtures("serverless"), and rest will be done by plugin.

import boto3
import pytest


@pytest.mark.usefixtures("serverless")
def test():
    table = boto3.resource("dynamodb").Table("my-microservice.my-table")
    count_of_items = len(table.scan()["Items"])
    assert count_of_items == 0

Supported resources

AWS::DynamoDB::Table

AWS::SQS::Queue

Issues?

Plugin is in early stage of development, so you might find some bugs or missing functionality.

If possible create pull request (with tests) that fixes particular problem.

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-serverless-0.8.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

pytest_serverless-0.8.0-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file pytest-serverless-0.8.0.tar.gz.

File metadata

  • Download URL: pytest-serverless-0.8.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0a2 CPython/3.6.5 Darwin/19.0.0

File hashes

Hashes for pytest-serverless-0.8.0.tar.gz
Algorithm Hash digest
SHA256 38795b9f8c40532e08cf160b014a6187b4ea4b8ee8bf00e60701f6dccc91493c
MD5 8890eb7ccd3b671dee42cc9a37800945
BLAKE2b-256 0da3adb75dbaad817a6b723c9c6df62da7b14fbb02b5228d4e49eb203f712ed8

See more details on using hashes here.

File details

Details for the file pytest_serverless-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_serverless-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0a2 CPython/3.6.5 Darwin/19.0.0

File hashes

Hashes for pytest_serverless-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 25cae32608a9d3000c594ca02748598f12c2001cd4605552dade2a8e416fed71
MD5 71a283c57424d6ddb94637256b4587a6
BLAKE2b-256 30d89139dd94910b352ac688e6ecd1082ffd64720f8d9524f3d5caa75b1cd5d4

See more details on using hashes here.

Supported by

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