O'Reilly logo
live online training icon Live Online training

Getting started with Python's pytest

Using pytest to test and debug your Python code

Topic: Software Development
Matt Harrison

Python already comes with powerful built-in testing utilities, such as unittest. However, with the pytest library, you can create tests that are even simpler and easier to write and debug. Join Matt Harrison for a hands-on introduction to pytest and related tools. You'll learn the theory behind testing, implement a basic test harness in Python, and write tests using the library. You'll also get hands-on experience debugging tests and discover how pytest compares with unittest and doctest. You'll walk away with a sound knowledge of testing and how to use it in Python.

What you'll learn-and how you can apply it

By the end of this live online course, you’ll understand:

  • The pytest module and related tools
  • The difference between pytest and unittest

And you’ll be able to:

  • Write tests using pytest
  • Run code coverage on your code

This training course is for you because...

  • You're a Python programmer with experience using the unittest module, and you want to learn about pytest.
  • You're a Python programmer who wants to learn about testing.


  • Programming experience with Python

Required materials and setup:

  • A machine with Python 3.6 (or above) installed and the ability to run IDLE. IDLE is a Python editor that ships with Python. (Run python3 -m idlelib.idle. Note that on Windows you need to open the Command Prompt and run: python -m idlelib.idle)

Recommended preparation:

Getting started with Python 3 (live online training course with Matt Harrison)

Recommended follow-up:

About your instructor

  • Matt runs MetaSnake, a Python and Data Science training and consulting company. He has over 15 years of experience using Python across a breadth of domains: Data Science, BI, Storage, Testing and Automation, Open Source Stack Management, and Search.


The timeframes are only estimates and may vary according to how the class is progressing

Introduction to the blockchain (10 minutes)

Environment and installation (10 minutes)

  • Lecture and hands-on walkthrough: Creating a virtual environment to sandbox your code and install pytest into the sandbox

Blockchain implementation (15 minutes)

  • Lecture and hands-on walkthrough: Creating a basic blockchain to test against.

Test-driven development with pytest (15 minutes)

  • Lecture and hands-on exercises: Code coverage; testing your implementation

Break (10 minutes)

Test-driven development with pytest continued (20 minutes)

  • Lecture and hands-on exercises: Running pytest from the command line; assertion rewriting; conventions for test discovery

Marking tests (15 minutes)

  • Lecture and hands-on exercises: Using the mark decorator syntax to skip tests or mark particular ones to run

Catching exceptions (15 minutes)

  • Lecture and hands-on exercises: Using the pytest.raises context manager to deal with exceptions in pytest

Break (10 minutes)

Debugging tests (10 minutes)

  • Lecture and hands-on exercises: Using pdb, assertions, and command-line options to debug tests

Controlling test execution (20 minutes)

  • Lecture and hands-on exercises: Exploring command-line options to determine which tests are run (using string expressions, node IDs, and markers)

Doctest (30 minutes)

  • Lecture and hands-on exercise: Using doctest; integrating it with pytest