#147: Mocking out AWS APIs
Published Wed, Sep 11, 2019,
recorded Wed, Sep 4, 2019
Sponsored by DigitalOcean: pythonbytes.fm/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 withprint
. - 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](https://www.encode.io/httpx/async/)
/[await](https://www.encode.io/httpx/async/)
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.
- Using
- This is particularly useful for two main use-cases:
- 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
- via Tyler Matteson
- I’m a big fan of the SOLID principles
- They even come in demotivator style posters
- This article will guide you through a complex process of writing simple code.
Extras
Michael:
Jokes
- 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!
via https://github.com/wesbos/dad-jokes
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.