pytest-chalice

A set of py.test fixtures for AWS Chalice

MIT License

Downloads
19.7K
Stars
21
Committers
2

==============
pytest-chalice

.. image:: https://img.shields.io/pypi/v/pytest-chalice.svg :target: https://pypi.org/project/pytest-chalice :alt: PyPI version

.. image:: https://img.shields.io/pypi/pyversions/pytest-chalice.svg :target: https://pypi.org/project/pytest-chalice :alt: Python versions

.. image:: https://travis-ci.org/studio3104/pytest-chalice.svg?branch=master :target: https://travis-ci.org/studio3104/pytest-chalice :alt: See Build Status on Travis CI

A set of py.test fixtures for AWS Chalice


Features

  • Launch the local gateway per test function
  • Provide an abstracted client fixture to access the local gateway
  • Expose an interface to overwrite response context with arbitrary objects
    • As of Chalice version 1.8.0, LocalGateway object doesn't handle Cognito's context
    • Not only for this purpose, it's an interface provided to allow custom contexts in unit tests

Requirements

  • pytest_
  • Chalice_

Installation

You can install "pytest-chalice" via pip_ from PyPI_::

$ pip install pytest-chalice

Usage

.. code-block:: python

from chalice import Chalice

app = Chalice(__name__)


@app.route('/')
def index:
    return {'hello': 'world'}

pytest-chalice expects a fixture called app which will be the chalice app instance from your project. You can create it in your conftest.py:

.. code-block:: python

import pytest

from chalice import Chalice

from project.app import app as chalice_app


@pytest.fixture
def app() -> Chalice:
    return chalice_app

.. code-block:: python

from http import HTTPStatus


def test_index(client):
    response = client.get('/')
    assert response.status_code == HTTPStatus.OK
    assert response.json == {'hello': 'world'}

See examples <https://github.com/studio3104/pytest-chalice/tree/master/examples>_ for more detailed

Contributing

Contributions are very welcome. Tests can be run with tox_, please ensure the coverage at least stays the same before you submit a pull request.

License

Distributed under the terms of the MIT_ license, "pytest-chalice" is free and open source software

Issues

If you encounter any problems, please file an issue_ along with a detailed description.

.. _@hackebrot: https://github.com/hackebrot .. _MIT: http://opensource.org/licenses/MIT .. _BSD-3: http://opensource.org/licenses/BSD-3-Clause .. _GNU GPL v3.0: http://www.gnu.org/licenses/gpl-3.0.txt .. _Apache Software License 2.0: http://www.apache.org/licenses/LICENSE-2.0 .. _cookiecutter-pytest-plugin: https://github.com/pytest-dev/cookiecutter-pytest-plugin .. _file an issue: https://github.com/studio3104/pytest-chalice/issues .. _pytest: https://github.com/pytest-dev/pytest .. _tox: https://tox.readthedocs.io/en/latest/ .. _pip: https://pypi.org/project/pip/ .. _PyPI: https://pypi.org/project .. _Chalice: https://github.com/aws/chalice