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

#147 Mocking out AWS APIs

Update: 2019-09-112
Share

Description

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 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](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.



    • 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





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.

Comments 
loading
00:00
00:00
1.0x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

#147 Mocking out AWS APIs

#147 Mocking out AWS APIs

Michael Kennedy (@mkennedy)