Complete Python Testing Guide

  • Release features faster & safer with swift and through automated testing
  • Improve your code’s design by ensuring its testability

  • Respond to changes quicker with tight feedback loop of automated tests
  • Focus on delivering value by putting business logic to the center
Developer taking Complete Python Testing Guide course

What do software engineers say?

Giacomo Miolo

Jan’s courses are a beacon of clarity, presenting complex concepts in an easily digestible format that doesn’t neglect the depth needed to build robust software. It’s rare to find educational material that strikes such a perfect balance between accessibility and comprehensive coverage.

Zev Averbach

Jan has earned his staff engineer title, and is a great mentor on top of that. When you go through one of his courses, you’re getting his expertise bottled up in an intermediate dev-friendly manner.

Excellent educator, both in his public courses and consulting sessions – that’s Jan. His knowledge helps me tons to organize the infrastructure for my SaaS project, and I’m grateful for all the help he provides.

Kevin Jake Casala

I was working on a project and I watched one of Jan’s talks on Python Web Conference 2023. The topic he discussed was about AWS ECS and Celery. It was so insightful – his explanation on the topic, tips and best practices. Straight to the point and quite easy to understand.

Vishwa Nageshwar Kodumagulla

Courses written by Jan are exceptionally well-designed, ensuring accessibility and comprehension for learners of all levels. The content effectively simplifies complex topics, optimises code, and implements best practices in development, thereby enhancing overall productivity.

Battle-tested approaches and techniques

What Will I Learn?

“Software is of high quality when you can safely change it faster than business can change their mind!”

Learn By Building

How Will I Learn?

Learning by building – we firmly believe in that. Therefore, by the end of the course, you’ll build an API for a garage sale covering the following cases:

  • Sign up user
  • Send welcome email to the user
  • Sync user data to CRM
  • Sync user data to analytics
  • Create new item for sale
  • List things for sale
  • Like items for sale
  • Order listed items based on the user’s previous likes
  • … and much more.

In other words, you’ll build a real application with all the things that suppose to be hard to test.

Software developer building application in cloud

Get 33% discount

Lock your 33% discount by pre-ordering now – no credit card needed

Modern Tools

Which Technologies Will I Use?

Modern Python testing approaches are best combined with modern Python tools. Therefore, using the right tools, testing can be significantly simplified. For example, FastAPI’s dependency injection can be used to make your tests faster while validating the same behavior. Consequently, throughout the course, you’ll use the following tech stack:

  • Pytest
  • FastAPI
  • Pydantic
  • Celery
  • Docker-Compose
  • SQLAlchemy
  • Postgres
  • Redis
  • Poetry

Although you might not be familiar with all of them, you should be able to follow the course as long as you’re fluent in Python.

“Passed test must give you confidence things are working. Failed test must give you confidence things are not working.”

Jan Giacomelli

About The Author

Jan is currently a Staff Software Engineer at, where he’s leading backend engineering efforts. Prior to that, he was co-founder and lead software engineer at Consequently, he gathered rich experiences in developing high-quality software used by the largest enterprises out there. In other words, his in-depth Python courses and tutorials on teach techniques and tools needed for effectively developing real-world applications. From setting up VPCs and ECS clusters on AWS with Terraform to deploying ML models on AWS Lambda, developing FastAPI APIs, and setting up CI/CD pipelines. Besides that, he’s also a speaker at Python conferences and a Python/AWS/TDD consultant.

Jan Giacomelli

“High-quality tests make your nights and weekends peaceful!”

Start Learning Now

Testing Tutorials

You don’t need to wait for course to be released in order to sharpen your Python testing skills. On, you can already find lots of free tutorials. For instance, you can start by going through the following ones:

Improve Python Testing Skills Now

Get free Python testing tips to your inbox by pre-ordering now

Learn Deeper Today


Tutorials can be great for learning one specific topic. Nevertheless, they’re usually not enough to cover more complex topics. Likewise, it’s hard to connect multiple different topics into a single coherent unit inside a single tutorial. On the contrary, courses do precisely that. They teach you how to connect multiple pieces into a single, well-oiled system. Therefore, you can check the courses that are already out and start learning today.

“Test behaviour, not implementation details!”

But Why?

Why I Decided To Write This Course?

The Struggle Is Real

I worked on code bases where 100% code coverage was required. I worked on code bases where all methods but the tested one had to be mocked. Therefore, believe me, I know what it means to update 100 tests for a single line change inside the implementation. Also, I contributed to projects where we were chasing our own tail – one bug was fixed, and three new bugs were added to production. Similarly, I was in setups where we just restarted failed test jobs and hoped that they’d pass the next time. Evidently, I know what it means to have automated tests that work against you. You lose time writing, executing, and maintaining them. Despite that, bugs are popping out from everywhere. So believe me when I say, “I know the automated tests struggle.”

There Is Hope

Despite all these experiences, I never gave up on automated testing. Instead of giving up, I decided to experiment as long as needed – until I find a way that I was reading about. The way that allows you to ship to production whenever tests pass. The way where tests are working for you and not vice versa. At this point in my career, I can say I found this way. I’m part of the team that ships to production ten times per day. Deployment is non-event. If pipelines are green, we ship to production.

Books, Courses And Tutorials

I’ve read quite a few books about software testing. In a similar fashion, I followed tutorials and courses. One thing that was always missing was – “How to apply that to a real-world project?”. Examples were usually very trivial and far from real-world problems (e.g., business logic was implemented, but there was no database interaction). Consequently, I had to figure out the things on my own. I’m not saying they didn’t help – they helped me a lot. But I just couldn’t find a way to apply ideas in my day-to-day work.

Complete Python Testing Guide

In the past years, I helped quite some developers set up their projects, improve Python testing skills, set up AWS environments, etc. Over and over again, I had to help them with testing. Many times, code design didn’t allow effective testing. I did help, but many times, a major rewrite would be needed to simplify testing. Therefore, I decided to prepare the Complete Python Testing Guide. To show developers how to build applications using real-world examples (e.g., syncing users to CRM). So the next time they do something, they can just reference this guide. (That’s what I’ve been doing with all my courses on my day-to-day job for years.)

Pre-Order Now

Get Python testing tips, course updates, and lock 33% discount