Development Tips

Below you can find some tips that might help during development.

Naming Conventions

Let’s say you want to implement the import_certificate feature for the ACM service.

Implementing the feature itself can be done by creating a method called import_certificate in moto/acm/responses.py.
It’s considered good practice to deal with input/output formatting and validation in responses.py, and create a method import_certificate in moto/acm/models.py that handles the actual import logic.

When writing tests, you’ll want to add a new method called def test_import_certificate to tests/test_acm/test_acm.py.
Additional tests should also have names indicate of what’s happening, i.e. def test_import_certificate_fails_without_name, def test_import_existing_certificate, etc.

Partial Implementations

If a service is only partially implemented, a warning can be used to inform the user:

import warnings
warnings.warn("The Filters-parameter is not yet implemented for client.method()")