Chapter 8. Pytest for DevOps

Continuous integration, continuous delivery, deployments, and any pipeline workflow in general with some thought put into it will be filled with validation. This validation can happen at every step of the way and when achieving important objectives.

For example, if in the middle of a long list of steps to produce a deployment, a curl command is called to get an all-important file, do you think the build should continue if it fails? Probably not! curl has a flag that can be used to produce a nonzero exit status (--fail) if an HTTP error happens. That simple flag usage is a form of validation: ensure that the request succeeded, otherwise fail the build step. The key word is to ensure that something succeeded, and that is at the core of this chapter: validation and testing strategies that can help you build better infrastructure.

Thinking about validation becomes all the more satisfying when Python gets in the mix, harnessing testing frameworks like pytest to handle the verification of systems.

This chapter reviews some of the basics associated with testing in Python using the phenomenal pytest framework, then dives into some advanced features of the framework, and finally goes into detail about the TestInfra project, a plug-in to pytest that can do system verification.

Testing Superpowers with pytest

We can’t say enough good things about the pytest framework. Created by Holger Krekel, it is now maintained by quite a few people that do an incredible ...

Get Python for DevOps now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.