DiscoverPython Bytes#147 Mocking out AWS APIs
#147 Mocking out AWS APIs

#147 Mocking out AWS APIs

Update: 2019-09-112


Sponsored by DigitalOcean:

Brian #1: rapidtables

  • rapidtables … converts lists of dictionaries to pre-formatted tables. And it does the job as fast as possible.”

  • Also can do color formatting if used in conjunction with termcolor.colored, but I’m mostly excited about really easily generating tabular data with print.

  • Can also format to markdown or reStructured text, and can do alignment, …

Michael #2: httpx

  • A next generation HTTP client for Python. 🦋

  • HTTPX builds on the well-established usability of requests, and gives you:

    • A requests-compatible API.

    • HTTP/2 and HTTP/1.1 support.

    • Support for issuing HTTP requests in parallel. (Coming soon)

    • Standard synchronous interface, but with [async]([await]( support if you need it.

    • Ability to make requests directly to WSGI or ASGI applications.

      • This is particularly useful for two main use-cases:

        • Using httpx as a client, inside test cases.

        • Mocking out external services, during tests or in dev/staging environments.

    • Strict timeouts everywhere.

    • Fully type annotated.

    • 100% test coverage.

  • Lovely support for “parallel requests” without full asyncio (at the API level).

    • Also pairs with async / await with async client.

  • Plus all the requests features

Brian #3: Quick and dirty mock service with Starlette

  • Matt Layman

  • Mock out / fake a third party service in a testing environment.

  • Starlette looks fun, but the process can be used with other API producing server packages.

  • We tell people to do things like this all the time, but there are few examples showing how to.

  • This example also introduces a delay because the service used in production takes over a minute and part of the testing is to make sure the system under test handles that delay gracefully.

  • Very cool, easy to follow write up. (Should probably have Matt on a Test & Code episode to talk about this strategy.)

Michael #4: Mocking out AWS APIs

  • via Giuseppe Cunsolo

  • A library that allows you to easily mock out tests based on AWS infrastructure.

  • Lovely use of a decorator to mock out S3

  • Moto isn't just for Python code and it isn't just for S3. Look at the standalone server mode for more information about running Moto with other languages.

  • Be sure to check out very important note.

Brian #5: μMongo: sync/async ODM

  • “μMongo is a Python MongoDB ODM. It inception comes from two needs: the lack of async ODM and the difficulty to do document (un)serialization with existing ODMs.”

  • works with common mongo drivers such as PyMongo, TxMongo, motor_asyncio, and mongomock. (Hadn’t heard of mongomock before, I’ll have to try that out.)

  • Note: We’ve discussed MongoEngine before. (I’m curious what Michael has to say about uMongo.)

Michael #6: Single Responsibility Principle in Python




  • Q: What do you get when you cross a computer and a life guard?

  • A: A screensaver!

  • Q: What do you get when you cross a computer with an elephant?

  • A: Lots of memory!


Anti-joke (we ready for those yet?): A Python developer, a PHP developer, a C# developer, and a Go developer went to lunch together. They had a nice lunch and got along fine.









#147 Mocking out AWS APIs

#147 Mocking out AWS APIs

Michael Kennedy (@mkennedy)