9 Testing
This chapter covers
- Testing Airflow tasks in a CI/CD pipeline
- Structuring a project for testing with pytest
- Mimicking a DAG run to test tasks that apply templating
- Faking external system events with mocking
- Testing behavior in external systems with containers
In all previous chapters, we focused on various parts of developing in and with Airflow. But how do you ensure the code you’ve written is valid before deploying it into a production system? Testing is an integral part of software development, and nobody wants to write code, take it through a deployment process, and keep their fingers crossed for all to be okay. Developing like this is obviously inefficient and provides no guarantees on the correct functioning of the software, both in valid and invalid situations.
This chapter will dive into the gray area of testing Airflow, which is often regarded as a tricky subject. This is because of Airflow’s nature of communicating with many external systems and the fact that it’s an orchestration system, which starts and stops tasks performing logic, while Airflow itself (often) does not perform any logic. Despite these challenges, however, you can do testing with Airflow, as we’ll see.