Test & Code

40 Episodes
Subscribe

By: Brian Okken

The Python Test Podcast hosted by Brian Okken

236: Git Tips for Testing - Adam Johnson
#236
07/30/2025

In this episode, host Brian Okken and guest Adam Johnson explore essential Git features, highlighted by Adam's updated book, "Boost Your Git DX." 

Key topics include 

"cherry picking" for selective commits"git stash" for managing in-progress work"git diff", and specifically its `--name-only` flag, which provides a streamlined method for developers to identify which files have changed, which can be used to determine which tests need to be run"git bisect" for efficiently pinpointing bugs. 

This conversation offers valuable strategies for developers at any skill level to enhance their Git proficiency and optimize their coding wor...


235: pytest-django - Adam Johnson
#235
07/22/2025

In this episode, special guest Adam Johnson joins the show and examines pytest-django, a popular plugin among Django developers. He highlights its advantages over the built-in unittest framework, including improved test management and debugging. Adam addresses transition challenges, evolving fixture practices, and offers tips for optimizing test performance. This episode is a concise guide for developers looking to enhance their testing strategies with pytest-django.

Links:

pytest-django - a plugin for pytest that provides a set of useful tools for testing Django applications and projects.

Help support the show AND learn pytest: 

The Complete p...


234: pytest-metadata - provides access to test session metadata
#234
05/08/2025

pytest-metadata is described as a plugin for pytest that provides access to test session metadata. 
That is such a humble description for such a massively useful plugin. 
If you're already using pytest-html, you have pytest-metadata already installed, as pytest-metadata is one of the dependencies for pytest-html.
However, pytest-metadata is very useful even on its own.

Links:

pytest-metadata - The plugin we're talking about in this episodepytest-base-url - Adds the base URL to the metadata.pytest-html - Displays the metadata at the start of each report. See S2:E6: pytest-html - a plugin that gen...


233: pytest-check - allow multiple failures per test
#233
05/02/2025

pytest-check is a pytest plugin that allows multiple failures per test.


Normally, a test function will fail and stop running with the first failed assert. That's totally fine for tons of kinds of software tests. However, there are times where you'd like to check more than one thing, and you'd really like to know the results of each check, even if one of them fails.


pytest-check allows multiple failed "checks" per test function, so you can see the whole picture of what's going wrong.

Links:

pytest-checkTop pytest plugins

...


232: The role of AI in software testing - Anthony Shaw
#232
04/25/2025

AI is helping people write code.  
Tests are one of those things that some people don't like to write.   

Can AI play a role in creating automated software tests?  
Well, yes. But it's a nuanced yes.  

Anthony Shaw comes on the show to discuss the topic and try to get AI to write some test for my very own cards project.

We discuss:

The promise of AI writing your tests for youDownsides to not writing tests yourselfBad ways to generate testsGood ways to ask AI for help in writing testsTricks to ge...


231: pytest-repeat - works fine on Python 3.14
#231
04/10/2025

pytest-repeat 

is a pytest plugin that makes it easy to repeat a single test, or multiple tests, a specific number of times.  works fine on Python 3.14is tested on Python 3.9-3.14probably works fine still on 3.7 & 3.8

This episode also discusses the attempted April Fools episode.

Links:

pytest-repeatThe April Fools episode: Python 3.14 won't repeat with pytest-repeat


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to...


230: Python 3.14 won't repeat with pytest-repeat
#230
04/01/2025

pytest-repeat is a pytest plugin that makes it easy to repeat a single test, or multiple tests, a specific number of times.  

Note: This was an April Fools attempt, so the statement ...
"Unfortunately, it doesn't seem to work with Python 3.14, even though there is no rational reason why it shouldn't work." 
... is NOT true.

Listen to the NEXT episode to get an explanation

Links:

pytest-repeatNext episode: pytest-repeat - works fine on Python 3.14

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, wit...


229: pytest-html - a plugin that generates HTML reports for test results
#229
03/27/2025

pytest-html has got to be one of my all time favorite plugins. 
pytest-html is a plugin for pytest that generates a HTML report for test results. 
This episode digs into some of the super coolness of pytest-html.

pytest-htmlrepo readme with screenshotenhancing reportspytest-metadata

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has lots of "when you need it" sections like deb...


228: pytest-md and pytest-md-report: Markdown reports for pytest
#228
03/01/2025

Markdown reports as either text or markdown tables.
Two fun plugins discussed.

Links:

pytest-md-reportpytest-mdTop pytest Plugins

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has lots of "when you need it" sections like debugging failed tests, mocking, testing strategy, and CIThen pytest Booster Rockets can help with advanced parametrization and building plugins.Whether you need to get started w...


227: Mocking in Python with unittest.mock - Michael Foord
#227
02/07/2025

This episode is a replay of a 2021 interview I did with Michael Foord.
We lost Michael in January, and I'd like to revisit this interview as a tribute. 

Michael Foord was a pivotal figure in the Python community and the creator of the mock library that's now unittest.mock. 
But he did so much more as well. 
His contributions continue to resonate within the developer community. 
This interview is just a small peek at his influence. 

In this episode

Introduction to Michael FoordThe Mock Library OriginsMocking and Testing PhilosophyCareer Path and C...


226: pytest-mock : Mocking in pytest
#226
01/31/2025

pytest-mock is currently the #3 pytest plugin. 
pytest-mock is a wrapper around unittest.mock.

In this episode:

Why the pytest-mock plugin is awesomeWhat is mocking, patching, and monkey patchingWhat, if any, is the difference between mock, fake, spy, stub. Why we might need these in testingSome history of mock in Python and how mock became unittest.mockFrom unittest.mockpatch.objectpatch.object with autospecusing these as context managerspytest-mock:The mocker fixture Cleanup in teardownUsing mocker.patch, mocker.spy, and mocker.stubWhy it's awesome and why you might want to use it over straight unittest.mock

Links:

t...


225: pytest-cov : The pytest plugin for measuring coverage
#225
01/23/2025

pytest-cov is a pytest plugin that helps produce coverage reports using Coverage.py.

In this episode, we'll discuss:

what Coverage.py iswhy you should measure code coverage on both your source and test codewhat pytest-cov isextra features pytest-cov gives you over and above coverage.pyand generally why using both is awesome

Links:

coverage.pypytest-covhow to set up context reportsTop pytest Plugins

Errata:

I mentioned that Coverage has the ability to show context (which line is covered by which test) for the past year or so.However, that feature was released in Oct 2018...


224: pytest plugins - a full series
#224
01/10/2025

This episode kicks off a series on pytest plugins.

In this episode:

Introduction to pytest pluginsThe pytest.org pytest plugin listFinding pytest related packages on PyPIThe Top pytest plugins list on pythontest.comExploring popular pluginsLearning from plugin examples

Links:

Top pytest plugins listpytest.org plugin listTop PyPI PackagesAnd links to plugins mentioned in the show can be found at pythontest.com/top-pytest-plugins

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest t...


223: Writing Stuff Down is a Super Power
#223
11/17/2024

Taking notes well can help to listen better, remember things, show respect, be more accountable, free up mind space to solve problems.

This episode discusses

the benefits of writing things downpreparing for a meetingtaking notes in meetingsreviewing notes for action items, todo items, things to follow up on, etc.taking notes to allow for better focuswriting well structured emailswriting blog posts and books

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that y...


222: Import within a Python package
#222
09/07/2024

In this episode we're talking about importing part of a package into another part of the same package.


We'll look at: `from . import module` and `from .module import something`

and also:  `import package` to access the external API from with the package.


Why would we use `import package` if `from . import api` would work fine?


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of py...


221: How to get pytest to import your code under test
#221
06/03/2024

We've got some code we want to test, and some tests.
The tests need to be able to import the code under test, or at least the API to it, in order to run tests against it.
How do we do that? How do we set things up so that our tests can import our code?

In this episode, we discuss two options:

Installing the code under test as a pip installable package with `pip install -e /path/to/local/package`.Using the pythonpath pytest setting.

Help support the show AND learn...


220: Getting the most out of PyCon, including juggling - Rob Ludwick
#220
05/04/2024

PyCon US is just around the corner.  I've asked Rob Ludwick to come on the show to discuss how to get the most out of your PyCon experience. There's a lot to do. A lot of activities to juggle, including actual juggling, which is where we start the conversation.

Even if you never get a chance to go to PyCon, I hope this interview helps you get a feel for the welcoming aspect of the Python community.

I recorded this interview as an episode for one of my other podcasts, Python People. But I think i...


219: Building Django Apps & SaaS Pegasus - Cory Zue
#219
04/24/2024

I'm starting a SaaS project using Django, and there are tons of decisions right out of the gate.
To help me navigate these decisions, I've brought on Cory Zue.   
Cory is the creator of SaaS Pegasus, and has tons of experience with Django.

Some of the topics discussed:

Building Django applicationsSaaS Pegasusplacecard.meWhat boilerplate projects areDjango cookiecutterCookiecutterWhich database to use, probably PostgreSQLAuthentication choises, probably AllauthDocker, Docker for development, Docker for deploymentDeployment targets / hosting services. Render, Heroku, Fly.io, for PaaS options.Front end frameworks. Bootstrap, Tailwind, DaisyUI, TailwindUIHTMX vs React vs straight Django templatesRocketsFont Aw...


218: Balancing test coverage with test costs - Nicole Tietz-Sokolskaya
#218
04/18/2024

Nicole is a software engineer and writer, and recently wrote about the trade-offs we make when deciding which tests to write and how much testing is enough.

We talk about:

Balancing schedule vs testingHow much testing is the right about of testingShould code coverage be measured and trackedGood refactoring can reduce code coverageIs it worth testing error conditions?Are rare error codes ok to just monitor?API drift and autospecMitigating riskDeciding what to test and what not to testFocus testing on key money-making features If there's a bug in this part of the code, how much b...


217: Podcasting / SaaS / Work Life Balance - Justin Jackson
#217
04/11/2024

If you've ever thought about starting a podcast or a SaaS project, you'll want to listen to this episode.
 
Justin is one of the people who motivated me to get started podcasting.
He's also running a successful SaaS company, transistor.fm, which hosts this podcast.

Topics:

PodcastingBuilding new SaaS (software as a service) productsBalancing work, side hustle, and familyGreat places to snowboard in British Columbia

BTW. This episode was recorded last summer before I switched to transistor.fm.
I'm now on Transistor for most of a year now, and I love i...


216: ruff, uv, and Astral: Python tooling, much faster, with Rust
#216
03/11/2024

Charlie Marsh and team are using Rust to make Python tooling faster.

Ruff can take the place of Flake8, isort, and Black, and so much more.uv can take the place of pip, pip-tools, and virtualenvAstral is Charlie's venture backed company, and what they have with `ruff` and `uv` is just the start.

Since uv is the newest tool, there's quite a bit of the discussion diving into uv.

Links:

ruffAstraluv

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.p...


215: Staying Technical as a Manager
#215
02/25/2024

Software engineers that move into leadership roles have a struggle between learning leadership skills, maintaining technical skills, and learning new leadership and technical skills. 
Matt Makai went from individual contributor to developer relations to leadership in devrel. 
We discuss how to stay technical, as well as dive into some results of his studies in how companies use developer relationship channels.


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to lea...


214: Python Testing in VS Code
#214
02/07/2024

If you haven't tried running automated tests, especially with pytest,  in VS Code recently, you should take another look.
The Python for VS Code interface for testing, especially for pytest, has changed recently. 
On this episode we discuss the change with the software engineer working on the pytest changes, Eleanor Boyd, and the product manager, Courtney Webster. 

Links from the episode:

Blog post announcing the rewrite  Code repo for questions, comments, issues etc

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part avail...


213: Repeating Tests
#213
01/19/2024

If a test fails in a test suite, I'm going to want to re-run the test. I may even want to re-run a test, or a subset of the suite, a bunch of times.  
There are a few pytest plugins that help with this:

pytest-repeatpytest-rerunfailurespytest-flakefinderpytest-instafail

We talk about each of these in this episode.


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Us...


212: Canon TDD - by Kent Beck
#212
01/13/2024

In 2002, Kent Beck released a book called  "Test Driven Development by Example".
In December of 2023, Kent wrote an article called "Canon TDD".
With Kent's permission, this episode contains the full content of the article.

Brian's commentary is saved for a followup episode.

Links:

Canon TDDTest Driven Development by Example

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest wi...


211: Stamp out test dependencies with pytest plugins
#211
12/15/2023

We want to be able to run tests in a suite, and debug them in isolation, and have the behavior be the same.  
If the behavior is different in isolation vs in a suite, it's a nightmare to debug. 

In this episode, we'll talk about:

Causes of dependenceTesting for dependencies using pluginsDebugging test dependencies

Plugins discussed:

pytest-randomlypytest-reversepytest-random-order



Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you...


210: TDD - Refactor while green
#210
11/30/2023

Test Driven Development. Red, Green, Refactor. 

Do we have to do the refactor part? Does the refactor at the end include tests? Or can I refactor the tests at any time?Why is refactor at the end? 

This episode is to talk about this with a an example.


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has lots of "when...


209: Testing argparse Applications
#209
11/16/2023

How do you test the argument parsing bit of an application that uses argparse?

This episode covers:

Design for Test: Structuring your app or script so it's easier to test.pytest & capsys for testing stdoutAdding debug and preview flags for debugging and testingAnd reverting to subprocess.run if you can't modify the code under test

Also, there's a full writeup and code samples available:

Blog post: Testing argparse Applications Code Repo

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.py...


208: Tests with no assert statements
#208
10/30/2023

Why on earth would you want to write a test with no assert statements?
After all, aren't assert statements how you decide wether a test passes or fails?

In this episode, we walk through a handful of useful examples of test code without asserts.
We also talk about how these types of tests are a great way to dip your toe into testing.


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of p...


207: pytest course, pytest-repeat and pytest-flakefinder
#207
09/26/2023

New course: "The Complete pytest Course"pytest-repeat, which I'm starting to contribute toGive `--repeat-scope` a try. You can use it to change from repeating every test to repeating the session, module, or class.pytest-flakefinder, which is an alternative to pytest-repeatpytest-check is completely unrelated, but mentioned in the show

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has lots of "when you need it" s...


206: TDD in Context
#206
08/23/2023

TDD (Test Driven Development) started from Test First Programming, and has been around at least since the 90's.

However, software tools and available CI systems have changed quite a bit since then.
Maybe it's time to re-examine the assumptions, practices, processes, and principles of TDD.
 
At least in the context of my software engineering career, modifications to TDD, at least the version of TDD as it's frequently taught, have been necessary.

This is the start of a series focused on examining TDD and related lightweight practices and processes.

Links from t...


205: pytest autouse fixtures
#205
08/01/2023

On a recent episode of PythonBytes, I suggested it's hard to come up with good examples for pytest autouse fixtures, as there aren't very many good reasons to use them.  James Falcon was kind enough to reach out and correct me. 

In this episode, we describe:

what fixtures arewhat autouse fixtures aregreat reasons to use them

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest eff...


204: Free Your Inner Nonfiction Writer - Johanna Rothman
#204
07/18/2023

Learn how to write nonfiction fast and well.
Johanna Rothman joins the show to discuss writing nonfiction.

Johanna's book: Free Your Inner Nonfiction Writer


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has lots of "when you need it" sections like debugging failed tests, mocking, testing strategy, and CIThen pytest Booster Rockets can help with advanced parametrization and b...


203: Open Source at Intel
#203
07/17/2023

Open Source is important to Intel and has been for a very long time.

Joe Curley, vice president and general manager of software products and ecosystem, and Arun Gupta, vice president and general manager for open ecosystems, join the show to discuss open source, OneAPI, and open ecosystems at Intel.


Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has l...


202: Using Towncrier to Keep a Changelog - Hynek Schlawack
#202
05/31/2023

Hynek joins the show to discuss towncrier. 

At the top of the towncrier documentation, it says "towncrier is a utility to produce useful, summarized news files (also known as changelogs) for your project."

Towncrier is used by "Twisted, pytest, pip, BuildBot, and attrs, among others."

This is the last of 3 episodes focused on keeping a CHANGELOG. 

Episode 200 kicked off the series with keepachangelog.com and Olivier Lacan
In 201 we had Ned Batchelder discussing scriv.

Special Guest: Hynek Schlawack.


Links:

Towncrier docsHow to Ke...


201: Avoid merge conflicts on your CHANGELOG with scriv - Ned Batchelder
#201
05/25/2023

Last week we talked about the importance of keeping a changelog.
 This week we talk with Ned Batchelder about scriv, a tool to help maintain that changelog.

Scriv "is a command-line tool for helping developers maintain useful changelogs. It manages a directory of changelog fragments. It aggregates them into entries in a CHANGELOG file."


Links:

nedbat/scriv: Changelog management tool

Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of...


200: Keep a CHANGELOG
#200
05/19/2023

A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project.
 This episode is about what a changelog is, with an interview with Olivier Lacan, creator of keepachangelog.com.
The next two episodes talk about some tools to help software project teams keep changelogs while avoiding merge conflicts. 

Special Guest: Olivier Lacan.


Links:

Shields.ioKeep a Changelog"The Changelog" Podcast interview with Olivier LacanAn Open Source Rage Diamond

Help support the show AND learn pytest: 

The Com...


199: Is Azure Right for a Side Project? - Pamela Fox
#199
05/04/2023

For a web side project to go from "working on desktop" to "live in the cloud", one decision that needs to be made is where to host everything. One option is Microsoft Azure. Lots of corporate sites use it. Is it right for side projects? 

Pamela Fox, a Cloud Advocate for Python at Microsoft, joins the show to help us with that question.


Links:

Python Bytes Episode #323pamelafox gitHub projectsDeploy a Python (Django or Flask) web app to AzureHosting Python Web Apps on Azure: A Price-OffDeploying a containerized FastAPI app to A...


198: Testing Django Web Applications - Carlton Gibson, Will Vincent
#198
04/27/2023

Django has some built in ways to test your application. There's also pytest-django and other plugins that help with testing. Carlton Gibson and Will Vincent from the Django Chat Podcast join the show to discuss how to get started testing your Django application.



Help support the show AND learn pytest: 

The Complete pytest course is now a bundle, with each part available separately.pytest Primary Power teaches the super powers of pytest that you need to learn to use pytest effectively.Using pytest with Projects has lots of "when you need it" s...


197: Python project trove classifiers - Do you need this bit of pyproject.toml metadata? - Brett Cannon
#197
04/05/2023

Classifiers are one bit of Python project metadata that predates PyPI.

 Classifiers are weird.

 They were around in setuptools days, and are still here with pyproject.toml. 

What are they? Why do we need them? Do we need them?Which classifiers should I include?Why are they called "trove classifiers" in the Python docs

Brett Cannon joins the show to discuss these wacky bits of metadata.

Here's an example, from pytest-crayons:

[project] ... classifiers = [ "License :: OSI Approved :: MIT License", "Framework :: Pytest" ]


Links:

Classifiers · PyPIPEP 621 – Storing project...