2020-04-22 17:36:41 -07:00
# Test tools for Python code examples
## Purpose
2020-06-25 17:11:13 -07:00
Centralizes PyTest fixtures and specialized stubbers based on the botocore Stubber
that Python code examples can use for unit tests.
2020-04-22 17:36:41 -07:00
## Prerequisites
- Python 3.6 or later
- Boto 3 1.11.10 or later
- PyTest 5.3.5 or later (to run unit tests)
## Using the tools
Include the tools in a test folder by adding the following code to the top of
your conftest.py file. The path should point from your module folder to the main
`python` folder of your repo.
```
import sys
# This is needed so Python can find test_tools on the path.
sys.path.append('../..')
from test_tools.fixtures.common import *
```
Pytest automatically finds this conftest.py file and imports it when started.
This code adds the main `python` folder of your repo to the path and imports the
common fixtures from the test tools.
### Stubs versus actual AWS
The main fixture in the test tools is `make_stubber` , which is a factory function
that lets you make a stubber for a specific AWS service client. The stubbers
inherit from the botocore Stubber and contain stub functions that you can use to
test the most common functions of the specified client.
All of the stubbers honor the `--use-real-aws-may-incur-charges` command line option.
When this option is not present, stubs are used in all tests and no requests are
made to your AWS account. When this option * is * present, the stubbers let requests
2020-04-24 11:19:31 -07:00
flow through to your actual AWS account, which might incur charges.
2020-04-22 17:36:41 -07:00
### Example
See the `python/example_code/sqs` folder of this repo for an example of a module
and its accompanying tests that use these centralized test tools.
---
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0