Skip to main content
Author:

Elvio Toccalino

Date:
2026/08/22
Version:
1.0.0

Testing artifacts to work with the boto3 library.

The focus is on python 3 and boto3. So far, utils cover working with SQS queues and SNS topics.

SQS

LiveTestQueue allows to quicky test code that depends on a SQS queue.

>>> with LiveTestQueue() as queue:
>>>   queue.send_message(MessageBody='some')
>>>   msgs = queue.receive_messages()
>>>   print(msgs[0].body)

The context manager takes care of creating and finally deleting the queue, as well as ensuring the queue has a unique name (prefixed, to be identified as a “test” queue).

SNS

LiveTestTopicQueue allows to test code on topics.

>>> with LiveTestTopicQueue() as topic, queue:
>>>     topic.publish(Message='some')
>>>     msgs = queue.receive_messages()
>>>     print(msgs[0].body)

The context manager creates (and finally deletes) a pair of objects, one topic and one queue, that work together. Messages published to the topic can be red back on the queue. The topic has the appropriate policy to publish to the queue, and the queue is subscribed to the topic to operate as its endpoint.

DynamoDB

LiveTestDynamoDBTable allows to test using live test DynamoDB tables:

>>> key_schema, attribute_definitions, provisioned_throughput = LiveTestDynamoDBTable.create_key_schema(
>>>     partition_key_name='my_partition_key', sorting_key_name='my_sorting_key',
>>>     partition_key_type='S', sorting_key_type='N', read_capacity_units=1, write_capacity_units=1)
>>> with LiveTestDynamoDBTable(key_schema_definition=key_schema,
>>>                            attribute_definitions=attribute_definitions,
>>>                            provisioned_throughput=provisioned_throughput) as table:

Note the helper function to create the key schemas. Upong exiting the context manager, the test table is deleted.

Miscs

reduce_logging_output()

Quicky reduces the amount of logging output from botocore to simplify debugging of other components.

cleanup()

Delete test topics and queues that might have been left behind. This function can also be invoked as a script, using python -m awstestutils.cleanup.

Tests

The package includes a set of integration tests. These test live objects against the AWS backend, so the network must be up and the boto3 must be correctly configured (as described here).

Examples

An example test can be found in examples.py.

Test an object that uses a topic to send data:

with LiveTestQueue() as queue:
    o = ObjectUnderTest(sqs_queue=queue)
    o.do_something()
    o.send_results_to_backend()

    msgs = queue.receive_messages()
self.assertEqual(len(msgs), 1)
expected = json.dumps(expected_output)
self.assertEqual(msgs[0].body, expected)

Testing an object that publishes to a topic, inspecting the message published:

with LiveTestTopicQueue() as (topic, queue):
    o = ObjectUnderTest(topic)
    o.do_something()
    o.send_results_to_aws()

    msgs = queue.receive_messages()
expected = json.dumps(expected_output)
self.assertEqual(msgs[0].body, expected)

Collaborators

  • Facundo Martinez (@fnmartinez) did an awesome job adding support for DynamoDB and its associated tests.

  • Ezequiel Pochiero (@epochiero) fixed the original blunder managing the region names.

Thank you both!

Release files for awstestutils 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for awstestutils 1.0.0
File Size Uploaded
awstestutils-1.0.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for awstestutils 1.0.0
File Interpreter ABI Platform
awstestutils-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.2 kB

Release files / awstestutils-1.0.0.tar.gz

Download URL awstestutils-1.0.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bf70e835c3ce080456626096f1b65632eb7a49bcf551c7d0dc3fc8983db7f98e
BLAKE2b-256 checksum
How to use checksums
a03c965512c1f6df268903c02f43ca9cdea3f8810277d0920e300794dd94f6d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / awstestutils-1.0.0-py3-none-any.whl

Download URL awstestutils-1.0.0-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df2802ded77a26b701269dedd059b3f6da1eb06c614d69734438ebdfea465dd0
BLAKE2b-256 checksum
How to use checksums
d53cf133b42231c5b4c6d4417254ebdaabce3ba51a328284a65f0ad96b9cd72d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.9.9

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

0.1.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page