A farewell to a fun 10 years.Also, I should have tested it better. :)In the audio I got the numbers wrong. Doh!This is episode 238, not 237. Oh well.I'll still be around, of course, at:pythontest.com - where I write about developing software with...
In this episode, Brian interviews Sebastián Ramírez, creator of FastAPI, about its rapid rise in developer popularity and the launch of FastAPI Cloud. Sebastian explains how FastAPI Cloud addresses deployment challenges small teams face. He shares his...
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...
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...
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...
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...
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...
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.8This episode also discusses the...
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,...
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...
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...
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,...
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...
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...
Taking notes well can help to listen better, remember things, show respect, be more accountable, free up mind space to solve problems.This episode discussesthe benefits of writing things downpreparing for a meetingtaking notes in meetingsreviewing...
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...
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...
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...
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...
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...
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,...
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...
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...
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...
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...
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...
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...
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.
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...
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...
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...
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...
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...
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
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...
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,...
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 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...
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...
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...
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...
Should we think of open source components the same way we think of physical parts for manufactured goods? There are problems with supply chain analogy when applied to software. Thomas Depierre discusses some of those issues in this episode. Links:I am...
Anthony Sottile and Brian discuss changes that would be cool for pytest, even unrealistic changes. These are changes we'd make to pytest if we didn't ahve to care about backwards compatibilty.Anthony's list:The import systemMulti-process...
I don't think it's too much of a stretch to say that software is part of most scientific research now. From astronomy, to neuroscience, to chemistry, to climate models. If you work in research that hasn't been affected by software yet,...
The first game I remember coding, or at least copying from a magazine, was in Basic. It was Lunar Lander. Learning to code a game is a way that a lot of people get started and excited about programming. Of course, I don't recommend Basic. Now...
Having a personal site is a great playground for learning tons of skills. Brian Wisti discusses the benefits of running a his own blog over the years.Links:Random GeekeryJamstackEleventyNetlifyPlausible AnalyticspytestBeautiful Souppyinvoke -...
PyPy is a fast, compliant alternative implementation of Python. cPython is implemented in C. PyPy is implemented in Python. What does that mean? And how do you test something as huge as an alternative implementation of Python?Special Guest: Carl...
In Python, before dataclasses, we had attrs. Before attrs, it wasn't pretty.The story of attrs and dataclasses is actually intertwined. They've built on each other. And in the middle of it all, Hynek.Hynek joins the show today to discuss some...
Will McGugan has brought a lot of color to CLIs within Python due to Rich. Then Textual started rethinking full command line applications, including layout with CSS. And now Textualize, a new startup, is bringing CLI apps to the...
When you are teaching someone web development skills, when is the right time to start teaching code quality and testing practices?Karl Stolley believes it's never too early. Let's hear how he incorporates code quality in his courses.Our...
Being productive is obviously a good thing. Can we measure it? Should we measure it? There's been failed attempts, like lines of code, etc. in the past. Currently, there are new tools to measure productivity, like using git metrics.Nick Hodges...
Django has a handful of console commands to help manage and develop sites. django-rich adds color and nice formatting. Super cool. In a recent release, django-rich also adds nice colorized tracebacks to the Django test runner. Links:django-rich ·...
Twisted has been supporting asynchronous / event driven applications way before asyncio. Twisted, and Glyph, have also been encouraging automated tests for a very long time.Twisted uses a technique that should be usable by other applications, even...
Ryan Cheley joins me today to talk about some challenges of managing software teams, and how to handle them. We end up talking about a lot of skills that are excellent for software engineers as well as managers.Some topics discussed:handling code...
Don't you just love technical interviews, with someone who just saw your resume or CV 5 minutes ago asking you to write some code on a whiteboard. Probably code that has nothing to do with anything you've done before or anything you will do at...
We talk with Adam Johnson about his new book, "Boost Your Django DX". Developer experience includes tools and practices to make developers more effective and efficient, and just plain make software development more fun and satisfying. One of...
Lean TDD is an attempt to reconcile some conflicting aspects of Test Driven Development and Lean Software Development.I've mentioned Lean TDD on the podcast a few times and even tried to do a quick outline at the end of episode 162.This episode is...
Exploratory testing is absolutely an essential part of a testing strategy. This episode discusses what exploratory testing is, its benefits, and how it fits within a framework of relying on automated tests for most of our testing.
"There are five practical reasons that we write tests. Whether we realize it or not, our personal testing philosophy is based on how we judge the relative importance of these reasons." - Sarah MeiThis episode discusses the factors.Sarah's...
A recent Twitter thread by Simon Willison reminded me that I've been meaning to do an episode on the testing trophy. This discussion is about the distinction between unit and integration tests, what those terms mean, and where we should spend our...
The idea of having a software as a service product sound great, doesn't it? Solve a problem with software. Have a nice looking landing page and website. Get paying customers. Eventually have it make enough revenue so you can turn it into your...
Who should do QA?How does that change with different projects and teams?What does "doing QA" mean, anyway?Answering these questions are the goals of this episode.Links:Test Automation - Who Should be Involved? | Thoughtworks
In this episode, I talk with Paul Ganssle about a fun workflow that he calls pseudo-TDD. Pseudo-TDD is a way to keep your commit history clean and your tests passing with each commit. This workflow includes using pytest xfail and some semi-advanced...
In the preface of "Python Testing with pytest" I list some reasons to use pytest, under a section called "why pytest?". Someone asked me recently, a different but related question "why NOT unittest?".unittest is an xUnit style...
A prototype is a a preliminary model of something, from which other forms are developed or copied. In software, we think of prototypes as early things, or a proof of concept. We don't often think of prototyping during daily software development or...
Paul Ganssle, is a software developer at Google, core Python dev, and open source maintainer for many projects, has some thoughts about pytest's xfail. He was an early skeptic of using xfail, and is now an proponent of the feature. In this...
Prayson Daniel, a principle data scientist, discusses testing machine learning pipelines with pytest.Prayson is using pytest for some pretty cool stuff, including:unit tests, of coursetesting pipeline stagescounterfactual testingperformance testingAll...
Performance monitoring and error detection is just as important with services and microservices as with any system, but with added complexity. Omri Sass joins the show to explain telemetry and monitoring of services and of systems with...
To understand complex code, it can be helpful to remove abstractions, even if it results in larger functions. This episode walks through a process I use to refactor code that I need to debug and fix, but don't completely understand.
Paul has a tutorial on testing and TDD with React and TypeScript. We discuss workflow and the differences, similarities between testing with React/TypeScript and Python. We also discuss what lessons that we can bring from front end testing to Python...
xfail isn't just for pytest tests. Python's unittest has @unittest.expectedFailure.In this episode, we cover:using @unittest.expectedFailurethe results of passing and failing tests with expectedFailureusing pytest as a test runner for...
A discussion of how to use the xfail feature of pytest to help with communication on software projects.The episode covers:What is xfailWhy I use itUsing reason effectively by including issue tracking numbersUsing xfail_strictAdding --runxfail when...
An overview of the pytest flags that help with debugging. From Chapter 13, Debugging Test Failures, of Python Testing with pytest, 2nd edition.pytest includes quite a few command-line flags that are useful for debugging. We talk about thes flags in...
pip : "pip installs packages" or maybe "Package Installer for Python" pip is an invaluable tool when developing with Python. A lot of people know pip as a way to install third party packages from pypi.org You can also use pip to...
What flavor of TDD do you practice? In this episode we talk about:Classical vs Mockist TDDDetroit vs London (I actually refer to it in the episode as Chicago instead of Detroit. Oh well.)Static vs BehaviorInside Out vs Outside InDouble Loop...
Software development processes create value, and have waste, in the Lean sense of the word waste. Lean manufacturing and lean software development changed the way we look at value and waste. This episode looks at lean definitions of waste, so we can...
Should your code be DRY or DAMP or something completely different? How about your test code? Do different rules apply? Wait, what do all of these acronyms mean?We'll get to all of these definitions, and then talk about how it applies to both...
When learning data science and machine learning techniques, you need to work on a data set. Matt Harrison had a great idea: Why not use your own Twitter analytics data? So, he did that with his own data, and shares what he learned in this episode,...
Iterative processes that include writing test code and production code together, such as TDD, help make coding fun. All of us that care about developing quality code with the help of testing can learn from each other, regardless of programming...
pre-commit started as a framework for running linters and code formatters during git actions via git hooks. It's grown and expanded and now supports an extensive list of languages and actions and manual running of actions. But even at it's...
Flake8 is a command-line tool for linting Python projects. By default, it includes lint checks provided Pyflakes, pycodestyle, and McCabe It's also a platform, and allows plugins to extend the checks. Flake8 will run third-party extensions if...
Tim Ottinger has four questions that work great in many situations, from doing homework, to cooking, to writing code, to entire software projects.They are actually awesome questions to ask during a software project.We discuss the questions, where they...
You need tests for your web app. And it has a database. What do you do with the database during testing? Should you use the real thing? or mock it? Jeff Triplett says don't mock it.In this episode, we talk with Jeff about testing web applications,...
Playwright is an end to end automated testing framework for web apps with Python support and even a pytest plugin.Links:Playwright for PythonWhy Playwright?playwright-pytest
I always learn a lot when I talk to Brett, and this episode is no exception. We talk about the packaging workflow, tools, changes, pyproject.toml, flit, setuptools, and so much more. I hope you learn as much as I did in this great...
Adventure, or Colossal Cave Adventure, was written between 1975 and 1977 in Fortran. Brandon Rhodes ported it to Python 3, initial release in 2011, and still maintains it. We talk to Brandon about this wonderful game.YOU ARE STANDING AT THE END OF A...
Coming up with a testing strategy doesn't have to be stressful. Prioritizing features to test, and generating test cases for each feature can be fairly quick and painless. This episode covers a strategy for both that can be applied to many types...
Corey Quinn is the Chief Cloud Economist at The Duckbill Group. He's also a podcaster and writes a newsletter. And he also automates things with Python. But he doesn't write tests. Let's find out why.Reason for the interview. Rough summary...
How do you test installed packages using coverage.py? Also, a couple followups from last week's episode on using coverage for single file applications. Links:episode 147: Testing Single File Python Applications/Scripts with pytest and...
Have you ever written a single file Python application or script? Have you written tests for it? Do you check code coverage?This is the topic of this weeks episode, spurred on by a listener question.The questions:For single file scripts, I'd like...
Building any software, including web apps and APIs requires testing. There's automated testing, and there's manual testing. In between that is exploratory testing aided by automation tools. Michael Kennedy joins the show this week to share...
A discussion about mocking in Python with the original contributor of unittest.mock, Michael Foord.Of course we discuss mocking and unittest.mock. We also discuss:testing philosophyunit testing and what a unit isTDDwhere Michael's towel is, and...
Test Driven Development, TDD, is not easy to incorporate in your daily development. Martin and Brian discuss TDD and testing and Martin's experience with testing, TDD, and using it for code involved with scientific research. We discuss lots of...
Completely nerding out about pytest markers with Anthony Sottile.Some of what we talk about:Running a subset of tests with markers.Using marker expressions with and, or, not, and parentheses.Keyword expressions also can use and, or, not, and...
MongoDB is possibly the most recognizable NoSQL document database. Mark Smith, a developer advocate for MongoDB, answers my many questions about MongoDB. We cover some basics, but also discuss some advanced features that I never knew about before this...
Visual Testing has come a long way from the early days of x,y mouse clicks and pixel comparisons. Angie Jones joins the show to discuss how modern visual testing tools work and how to incorporate visual testing into a complete testing strategy. Some...
Scientists learn programming as they need it. Some of them learn it in college, but even if they do, that's not their focus. It's not surprising that sharing the software used for scientific research and papers is spotty, at best. And what...
Talking with Nalin Parbhu about the software evolution towards more test automation and the creation of Infuse and useMango.We talk a software development and "shift left" where automated tests and quality checks have moved earlier into the...
Your test suite tells you about the quality of your code under test. Mutation testing is a way to tell you about the quality of your test suite. Anders Hovmöller wrote mutmut for mutation testing in Python, and can be used with pytest, unittest, and...
Matt Harrison, author of many Python books, is putting together a course, Effective Book Authoring, to help other people write and publish books. As part of this course, he's including interviews with people who have already written books,...
Wearable technology is not just smart consumer devices like watches and activity trackers. Wearable tech also includes one off projects by designers, makers, and hackers and there are more and more people producing tutorials on how to get started....
All test suites start fast. But as you grow your set of tests, each test adds a little bit of time to the suite. What can you do about it to keep test suites fast? Some things, like parallelization, are applicable to many domains. What about, for...
Within software projects, there are lots of metrics we could measure. But which ones really matter. Instead of a list, Benjamin Harding shares with us a way of thinking about business outcomes that can help us with every day decision making. We talk...
Hackathons have been spreading around the world; many at university campuses. Major League Hacking, MLH, has been encouraging and helping hackathons.Hacking can be thought of as tinkering. Taking things apart and putting them back together as an...
Using mock objects during testing in Python.Anna-Lena joins the podcast to teach us about mocks and using unittest.mock objects during testing. We discuss:the different styles of using mockspros and cons of mocksdependency injectionadapter patternmock...
Some people avoid writing tests. Some drudge through it painfully. There is a better way. In this episode, I'm going to share some advice from Luke Plant on how to "Test Smarter, Not Harder".Links:Test smarter, not harder - lukeplant.me.uk...
virtualenv supports six shells: bash, csh, fish, xonsh, cmd, posh. Each handles prompts slightly differently. Although the virtualenv custom prompt behavior should be the same across shells, Brian Skinn noticed inconsistencies. He set out to fix those...
I asked people on twitter to fill in "How do I test _____?" to find out what people want to know how to test. Lots of responses. David Lord agreed to answer them with me. In the process, we come up with lots of great general advice on how to...
Software tests should be order independent. That means you should be able to run them in any order or run them in isolation and get the same result.However, system state often gets in the way and order dependence can creep into a test suite. One way...
Many people have been working from home now that are not used to working from home. Or at least are working from home more than they ever did before. That's definitely true for me. Even though I've been working from home since March, I wanted...
Researches and others using data science and software need to follow solid software engineering practices. This is a message that Joel Grus has been promoting for some time.Joel joins the show this week to talk about data science, software...
pytest 6 is out. Specifically, 6.0.1, as of July 31. And there's lots to be excited about. Anthony Sottile joins the show to discuss features, improvements, documentation updates and more.Full release notes / changelogSome of what we talk...
pip is the package installer for Python. Often, when you run pip, especially the first time in a new virtual environment, you will see something like:WARNING: You are using pip version 20.1.1; however, version 20.2 is available. You should consider...
Lots of Python projects are starting to use GitHub Actions for Continous Integration & Deployment (CI/CD), as well as other workflows.Tania Allard, a Senior Cloud Developer Advocate at Microsoft, joins the show to answer some of my questions...
A great resume is key to landing a great software job. There's no surprise there. But so many people make mistakes on their resume that can very easily be fixed.Randall Kanna is on the show today to help us understand how to improve our resumes,...
Len Wanger works on industrial 3D printers. And I was pleased to find out that there's a bunch of Python in those printers as well. In this episode we talk about:3D printersWhat are the different types of 3D printers?Where are 3D printed...
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints. Typer is a library for building CLI applications, also based on Python type hints. Type hints and many other details are...
There's stuff going on in Python packaging and pyproject.toml.Brett and I talk about some upcoming work on Python packaging, such as:editable installsthe need for standardizationconfiguration of other tools in pyproject.tomlAnd then get off on...
Code Coverage or Test Coverage is a way to measure what lines of code and branches in your code that are utilized during testing. Coverage tools are an important part of software engineering. But there's also lots of different opinions about...
The Python extension for VS Code is most downloaded extension for VS Code. Brett Cannon is the manager for the distributed development team of the Python extension for VS Code.In this episode, Brett and I discuss the Python extension and VS Code,...
pytest plugins are an amazing way to supercharge your test suites, leveraging great solutions from people solving test problems all over the world. In this episode Michael and I discuss 15 favorite plugins that you should know about.We also discuss...
One of the great things about attending in person coding conferences, such as PyCon, is the hallway track, where you can catch up with people you haven't seen for possibly a year, or maybe even the first time you've met in person. Nina is...
"The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers."That's a lot of...
Technical debt has to be dealt with on a regular basis to have a healthy product and development team.The impacts of technical debt include emotional drain on engineers and slowing down development and can adversely affect your hiring ability and...
"Code is read much more often than it is written." - Guido van Rossum This is true for both production code and test code.When you are trying to understand why a test is failing, you'll be very grateful to the test author if they've...
In both unittest and pytest, when a test function hits a failing assert, the test stops and is marked as a failed test. What if you want to keep going, and check more things? There are a few ways. One of them is subtests.Python's unittest...
Django supports testing out of the box with some cool extensions to unittest. However, many people are using pytest for their Django testing, mostly using the pytest-django plugin.Adam Parkin, who is known online as CodependentCodr, joins us to talk...
Financial services have their own unique testing development challenges. But they also have lots of the same challenges as many other software projects. Eric Bergemann joins Brian Okken to discuss:Specific testing challenges in the financial services...
Apache Spark is a unified analytics engine for large-scale data processing. PySpark blends the powerful Spark big data processing engine with the Python programming language to provide a data analysis platform that can scale up for nearly any...
Hypothesis is the Python tool used for property based testing. Hypothesis claims to combine "human understanding of your problem domain with machine intelligence to improve the quality of your testing process while spending less time writing...
IDEs can help people with automated testing.In this episode, Paul Everitt and Brian discuss ways IDEs can encourage testing and make it easier for everyone, including beginners. We discuss features that exist and are great, as well as what is...
The Test Anything Protocol, or TAP, is a way to record test results in a language agnostic way, predates XML by about 10 years, and is still alive and kicking.Matt Layman has contributed to Python in many ways, including his educational newsletter,...
pytest is awesome by itself. pytest + plugins is even better. In this episode, Anthony Sottile and Brian Okken discuss the top 28 pytest plugins.Some of the plugins discussed (we also mention a few plugins related to some on this...
Django is without a doubt one of the most used web frameworks for Python. Lacey Williams Henschel is a Django consultant and has joined me to talk about Django, the Django community, and so much more.Topics:DjangoThe Django CommunityDjango GirlsDjango...
Harry Percival has completed his second book, "Architecture Patterns with Python". So of course we talk about the book, also known as "Cosmic Python". We also discuss lots of testing topics, especially related to larger systems and...
Application security is best designed into a system from the start. Anthony Shaw is doing something about it by creating an editor plugin that actually helps you write more secure application code while you are coding.On today's Test & Code,...
Let's say you have a web application and you want to make some changes to improve it. You may want to A/B test it first to make sure you are really improving things.But really what is A/B testing? That's what we'll find out on this episode...
I play a form of group chess that has some interesting analogies to software development and maintenance of existing systems. This episode explains group chess and explores a few of those analogies.
pytest-testmon is a pytest plugin which selects and executes only tests you need to run. It does this by collecting dependencies between tests and all executed code (internally using Coverage.py) and comparing the dependencies against changes. testmon...
This episode is not just a look back on 2019, and a look forward to 2020. Also, 2019 is the end of an amazingly transofrmative decade for me, so I'm going to discuss that as well.top 10 episodes of 201910: episode 46, Testing Hard To Test...
Pipelines are used a lot in software projects to automated much of the work around build, test, deployment and more. Thomas Eckert talks with me about pipelines, specifically Azure Pipelines. Some of the history, and how we can use pipelines for...
Data science and machine learning are affecting more of our lives every day. Decisions based on data science and machine learning are heavily dependent on the quality of the data, and the quality of the data pipeline.Some of the software in the...
You've applied for a job, maybe lots of jobs. Depending on the company, you've gotta get through:a resume reviewa coding challangea phone screenmaybe another code examplean in person interviewIf you get the job, and you enjoy the work,...
Andy Knight is the Automation Panda. Andy Knight is passionate about software testing, and shares his passion through public speaking, writing on automationpanda.com, teaching as an adjunct professor, and now also through writing a book and organizing...
Cristian Medina wrote an article recently called "Test Engineering Anti-Patterns: Destroy Your Customer Satisfaction and Crater Your Quality By Using These 9 Easy Organizational Practices"Of course, it's sarcastic, and aims to highlight...
Python 3.8.0 final is live and ready to download.
On todays episode, we're going to run through what's new, picking out the bits that I think are the most interesting and affect the most people, including
new language features
standard...
pytest 5.2 was just released, and with it, a cool fun feature called dynamic scope fixtures. Anthony Sottile so tilly is one of the pytest core developers, so I thought it be fun to have Anthony describe this new feature for us.
We also talk about...
Nicholas Tollervey is working toward better ways of teaching programming. His projects include the Mu Editor, PyperCard, and CodeGrades. Many of us talk about problems with software education. Nicholas is doing something about it.Special Guest:...
Tools like error monitoring, crash reporting, and performance monitoring are tools to help you create a better user experience and are fast becoming crucial tools for web development and site reliability. But really what are they? And when do you need...
There's a cool feature of pytest called parametrization.
It's totally one of the superpowers of pytest.
It's actually a handful of features, and there are a few ways to approach it.
Parametrization is the ability to take one test, and send...
You've incorporated software testing into your coding practices and know from experience that it helps you get your stuff done faster with less headache.
Awesome.
Now your colleagues want in on that super power and want to learn testing.
How do...
Good software testing strategy is one of the best ways to save developer time and shorten software development delivery cycle time.
Software test suites grow from small quick suites at the beginning of a project to larger suites as we add tests, and...
Adafruit enables beginners to make amazing hardware/software projects.
With CircuitPython, these projects can now use Python.
The combination of Python's ease of use and Adafruit's super cool hardware and a focus on a successful beginner...
Bob Belderbos and Julian Sequeira started PyBites a few years ago.
They started doing code challanges along with people around the world and writing about it.
Then came the codechalleng.es platform, where you can do code challenges in the browser and...
Anthony Sottile is a pytest core contributor, as well as a maintainer and contributor to
many other projects. In this episode, Anthony shares some of the super cool features of pytest that have been added since he started using it.
We also discuss...
In the last episode, we talked about going from script to supported package.
I worked on a project called subark and did the packaging with flit.
Today's episode is a continuation where we add new features to a supported package and how to...
This episode is a story about packaging, and flit, tox, pytest, and coverage.
And an alternate solution to "using the src".
Python makes it easy to build simple tools for all kinds of tasks.
And it's great to be able to share small...
Some information about software testing is just wrong.
I'm not talking about opinions. I have lots of opinions and they differ from other peoples opinions. I'm talking about misinformation and old information that is no longer...
Roadblocks to writing tests, and what to do about it.
Some developers either don't write tests, or don't like writing tests.
Why not? I love writing tests.
In this episode we examine lots of roadblocks to testing, and start coming up with...
Creating maintainable test suites for complex systems. The episode describes some complexities involved with hardware testing, then shares techniques for shifting complexity out of the test cases.
quick overview of what test instruments...
Test Driven Development, TDD, can be intimidating to try.
Why is that? And how can we make it less scary?
That's what this episode is about.
Chris May is a Python developer and the co-founder of PyRVA, the Richmond Virginia Python group.
In this...
Software testing, if done right, is done all the time, throughout the whole life of a software project. This is different than the verification and validation of a classical model of QA teams. It's more of a collaborative model that actually tries...
In this episode, I talk with Derrick Mar, CTO and co-founder of Pathrise.
This is the episode you need to listen to to get ready for software interviews.
We discuss four aspects of technical interviews that interviewers are looking...
This is a "Yay! It's PyCon 2019" episode.
PyCon is very important to me.
But it's kinda hard to put a finger on why.
So I figured I'd ask more people to help explain why it's important.
I ask a few simple questions to people...
Some typical technical interview practices can be harmful and get in the way of hiring great people. April Wensel offers advice to help fix the technical interview process.
She recommends:
hire for mindset and attitude
look for empathy and mentorship...
Nina Zakharenko gives some great advice about giving tech talks.
We talk about a blog series that Nina wrote called "The Ultimate Guide To Memorable Tech Talks". This episode is full of great help and encouragement for your own public speaking...
Dane and Brian discuss skills needed for people that become software developers from non-traditional paths.
Dane is also writing a book to address many of these skill gaps, Code Like a Pro, that's currently in an early access phase. Use code...
Andy Hunt and Dave Thomas wrote the seminal software development book, The Pragmatic Programmer. Together they founded The Pragmatic Programmers and are well known as founders of the agile movement and authors of the Agile Manifesto. They founded the...
With conventional TDD, you write a failing test, get it to pass, then refactor.
Then run the tests again to make sure your refactoring didn't break anything.
But what if it did break something?
Kent Beck has been recommending to commit your code...
In today's episode we talk with Kelly Paredes & Sean Tibor.
They teach Python in a middle school in Florida, and talk about this experience on the podcast "Teaching Python".
I love that they include physical computing right from the...
I was recently interviewed on a podcast called "IT Career Energizer Podcast".
Phil Burgess is the host of the podcast, and it was a lot of fun.
I think it turned out well, and I wanted to share it with you here, with Phil's permission, of...
Is it ok to have more than one assert statement in a test?
I've seen articles that say no, you should never have more than one assert.
I've also seen some test code made almost unreadable due to trying to avoid more than one assert per...
I want you to get the most out of being a software developer, or test engineer, or whatever you do that makes this podcast relevant to your life.
By "get the most" I mean:
the most fun
the most value
more career options
probably more...
I hear and I forget.
I see and I remember.
I do and I understand.
-- Confucius
Matt Harrison is an author and instructor of Python and Data Science. This episode focuses on his training company, MetaSnake, and corporate training.
Matt's written...
There are a lot of learning styles and a lot of ways to learn Python. If you started Python through a class at work, or through an online course, or maybe an email series, it's possibly you may have learned from Reuven Lerner.
If your first...
A look back on 3 years of podcasting, and a bit of a look forward to what to expect in 2019.
Top 5 episodes:
2: Pytest vs Unittest vs Nose
33: Katharine Jarmul - Testing in Data Science
18: Testing in Startups and Hiring Software Engineers with Joe...
Julian Sequeira is Co-Founder of PyBit.es (a blog/platform created to teach and learn Python) and a Python Trainer at Talk Python Training.
He's also a survivor of the 100DaysOfCode in Python Challenge.
We talk about the 100 days challenge, about...
Thea Flowers is a Pythonista and open source advocate. She helps empower developers of all backgrounds and experience levels using Python and open source software and hardware.
Thea is the creator of Nox, the co-chair of PyCascades 2019, the lead...
Let's say you've got a web application you need to test.
It has a REST API that you want to use for testing.
Can you use Python for this testing even if the application is written in some other language? Of course.
Can you use pytest? duh....
Data science, data engineering, data analysis, and machine learning are part of the recent massive growth of Python.
But really what is data science?
Vicki Boykis helps me understand questions like:
No really, what is data science?
What does a data...
Michael Kennedy of Talk Python and Python Bytes fame joins Brian to talk about being a great guest and what to expect.
Even if you have never wanted to be on a podcast, you might learn some great tips. A few of the things we talk about will be...
What happens when 100% test code coverage just isn't enough.
In this episode, we talk with Mahmoud Hashemi about glom, a very cool project in itself, but a project that needs more coverage than 100%.
This problem affects lots of projects that use...
Paul talks about the beginning years of Python.
Talking about Python's beginnings is also talking about the Python community beginnings.
Yes, it's reminiscing, but it's fun.Special Guest: Paul Everitt.Links:Python 1994 Panel Discussion...
Luc Perkins joins the show to talk about "Seven Databases in Seven Weeks: A guide to modern databases and the NoSQL movement."
We discuss a bit about each database: Redis, Neo4J, CouchDB, MongoDB, HBase, Postgres, and DynamoDB.Special Guest:...
Brett Cannon discusses the changes afoot in Python packaging as a result of PEP 517, PEP 518, starting with "How did we get here?" and "Where are we going?"
Discussed:
flit
Poetry
tox
Continuous Integration
setup.py, MANIFEST.in,...
Andy Knight joins me in discussing the concept of feature testing.
A feature tests is "a test verifying a service or library as the customer would use it, but within a single process." That was a quote from an article that appeared on the...
Anthony Shaw joins Brian to discuss flaky tests and flaky test suites.
What are flaky tests?
Is it the same as fragile tests?
Why are they bad?
How do we deal with them?
What causes flakiness?
How can we fix them?
How can we avoid them?
Proactively...
tox is a simple yet powerful tool that is used by many Python projects.
tox is not just a tool to help you test a Python project against multiple versions of Python. In this interview, Oliver and Brian just scratch the surface of this simple yet...
The story of how I came to find a good user interface for running and debugging automated tests is interleaved with a multi-year effort of mine to have a test workflow that’s works smoothly with product development and actually speeds things up. It’s...
Interview with Andy Knight, the Automation Panda.
Selenium & WebDriver
Headless Chrome
Gherkin
BDD
Given When Then
pytest-bdd
PyCharm
Writing Good Gherkin
Overhead of Gherkin and if it's worth it
When to use pytest vs pytest-bdd
The art of...
How do you write tests for things that aren’t that easy to write tests for?
That question is a possibly terrible summary of a question sent to me by a listener. And to help me start answering that question, I asked a friend of mine to help, Antony...
David Heinemeier Hansson is the creator of Ruby on Rails, founder & CTO at Basecamp (formerly 37signals). He's a best selling author, public speaker, and even a Le Mans class winning racing driver.
All of that, of course, is awesome. But...
Nina Zakharenko is a cloud developer advocate at Microsoft focusing on Python. She's also an excellent public speaker. We talk about her experience with mentoring, both being a mentor, and utilizing mentors. We also talk about public speaking, her...
After I had wrapped up the interview with Kelsey Hightower for episode 43, I asked him one last question.
You see, I admire the his presentation style.
So I asked him if he would share with me how he prepared for his presentations.
His answer is so...
I first heard Kelsey speak during his 2017 PyCon keynote.
He's an amazing speaker, and I knew right then I wanted to hear more about what he does and hear more of his story.
We discuss testing, of course, but we take it further and...
This interview with Trey Hunner discusses his use of automated tests to help teach programming.
Automated testing is a huge part of developing great software. But many new developers don't get exposed to testing for quite a while. But this is...
We talk with Anthony Shaw about some of the testing problems facing both DevOps teams, and Agile teams. We also talk about his recent pull request accepted into pytest.Special Guest: Anthony Shaw.Links:Anthony Shaw on github.ioSupport for the new...
Adam is the host of The Gently Mad podcast, and teaches the steps in creating and growing a podcast in his course Irresistible Podcasting.
He was one of the people who inspired Brian to get the Test & Code podcast started in the first place. Brian...
Complete and exhaustive testing is not possible. Nor would it be fun, or maintainable, or a good use of your time.
However, some functionality is important enough to make sure the test behavior coverage is thorough enough to have high confidence in...
RCRCRC was developed by Karen Nicole Johnson.
In this episode we discuss the mnemonic/heuristic and use it to prioritize tests for the cards application.
Recent: new features, new areas of code
Core: essential functions must continue to work, your...
This episode starts down the path of test strategy with the first tests to write in either a legacy system or a project just getting off it's feet.
We cover:
My approach to testing existing systems.
Put names to strategies so we can refer to them...
Stephanie is a co-founder and graphics engineer at Binomial.
She works on Basis, an image compressor, and has customers in games, video, mapping, and any application that has lots of image data.
Stephanie has also been encouraging experienced...
There are lots of ways to up your skills.
Of course, I'm a big fan of learning through reading books, such as upping your testing skills by reading Python Testing with pytest.
And then there are online learning systems and MOOCs.
At the other end...
An in depth discussion of Test Driven Development (TDD) should include a discussion of Test First. So that's where we start.
Why write tests first?
How do you know what tests to write?
What are the steps for test first?
Isn't this just...
A discussion with Katharine Jarmul, aka kjam, about some of the challenges of data science with respect to testing.
Some of the topics we discuss:
experimentation vs testing
testing pipelines and pipeline changes
automating data validation
property...
A wonderful discussion with David Hussman. David and Brian look back at what all we've learned in XP, TDD, and other Agile methodologies, where things have gone awry, how to bring the value back, and where testing fits into all of this.
How to...
What started as a twitter disagreement carries over into this civil discussion of software testing.
Brian and Paul discuss testing practices such as the testing pyramid, TDD, unit testing, system testing, and balancing test effort.
the Testing...
M. Scott Ford is the founder and chief code whisperer at Corgibytes, a company focused on helping other companies with legacy code.
Topics include:
How M. Scott Ford got into forming a company that works on legacy code.
Technical debt
Process...
Today we have an interview with Casey Rosenthal of Netflix.
One of the people making sure Netflix runs smoothly is Casey Rosenthall.
He is the manager for the Traffic, Intuition, and Chaos teams at Netflix.
He's got a great perspective on quality...
What is the difference between a unit test, an integration test, and a system test? Mahmoud Hashemi helps me to define these terms, as well as discuss the role of all testing variants in software development.
What is the difference between a unit...
Interview with Sam Van Oort about pyresttest, "A REST testing and API microbenchmarking tool"
pyresttest
A question in the Test & Code Slack channel was raised about testing REST APIs. There were answers such as pytest + requests, of...
Interview with Dave HuntdWe Cover:Selenium Driverpytestpytest plugins: pytest-seleniumpytest-htmlpytest-variablestoxDave Hunt’s “help wanted” list on githubMozillaAlso:fixturesxfailCI and xfail and html reportsCI and capturing pytest code...
pytest is an extremely popular test framework used by many projects and companies. In this episode, I interview Raphael Aurich (@hackebrot), a core contributor to both pytest and cookiecutter. We discuss how Raphael got involved with both projects,...
Kent Beck's twitter profile says "Programmer, author, father, husband, goat farmer". But I know him best from his work on extreme programming, test first programming, and test driven development. He's the one. The reason you know about...
How do you convert manual tests to automated tests?
This episode looks at the differences between manual and automated tests and presents two strategies for converting manual to automated.
A listener requested that I start covering some terminology. I think it's a great idea.Covered in this episode:Test FixturesSubcutaneous TestingEnd to End Testing (System Testing)I also discuss:A book rewriteProgress on transcriptsA story from...
I talk with Michael about:Episodes of his show having to do with testing.His transition from employee to podcast host and online training entrepreneur.His Python training courses.The Pyramid Web framework.Courses by MichaelExplore Python Jumpstart by...
Interview with Robert Collins, current core maintainer of Python's unittest module.Some of the topics coveredHow did Robert become the maintainer of unittest?unittest2 as a rolling backport of unittesttest and class parametrization with subtest...
In this episode, I interview with Joe Stump, cofounder of Sprintly (https://sprint.ly), to give the startup perspective to development and testing.Joe has spent his career in startups. He's also been involved with hiring and talent acquisition...
The Travis Foundation. Interview with Laura GaetanoLinks and things we talked about:Travis FoundationOpen Source GrantsThe Foundation's support of Katrina Owen from exercism.ioExercism.ioRails Girls summer of codeDiversity TicketsConference...
This is a small episode.
I'm changing the name from the "Python Test Podcast" to "Test & Code".
I just want to discuss the reasons behind this change, and take a peek at what's coming up in the future for this...
An introduction to Lean Software Development
This is a quick intro to the concepts of Lean Software Development.
I'm starting a journey of trying to figure out how to apply lean principles to software development in the context of...
Interview with Josh Kalderimis from Travis CI.
Josh is a co-founder and Chief Post-It Officer at Travis CI.
Topics
What is Continuous Integration, CI
What is Travis CI
Some history of the company
travis-ci.org vs travis-ci.com and merging the...
Testing apps that use requests without using mock.
Interview with Ian Cordasco (@sigmavirus24)
Topics:
Betamax - python library for replaying requests interactions for use in testing.
requests
github3.py
Pycon 2015 talk: Ian Cordasco - Cutting Off...
In this episode I interview Ned Batchelder.
I know that coverage.py is very important to a lot of people to understand how much of their code is being covered by their test suites.
Since I'm far from an expert on coverage, I asked Ned to discuss...
How pytest, unittest, and nose deal with assertions.
The job of the test framework to tell developers how and why their tests failed is a difficult job.
In this episode I talk about assert helper functions and the 3 methods pytest uses to get around...
Given-When-Then is borrowed from BDD and is my favorite structure for test case design.
It doesn’t matter if you are using pytest, unittest, nose, or something completely different, this episode will help you write better tests.
The Given-When-Then...
Intro to Harry Percival, his background and story of how he got into TDD and ended up writing a bookComparing using unittest and pytest with applicability to testing django projects. Functional end to end testing with selenium.The django test client...
The waterfall model has been used and modified and changed and rebelled against since before I started programming. Waterfall such an important character in the story of software development that we should get to know it a better.
My experience with writing software comes from my experience: where I grew up, what eras I lived through, what my economical and geographical experiences have been, when I learned to code, and what projects I've worked on.
Setup and Teardown
Benefits of Test Fixtures
code reuse
cleanup of resources
errors vs failures
focusing your thinking on what you are testing and what you are not
scoping for efficiency
Brief look at pytest named fixtures
References
pytest...
Setup and Teardown
Benefits of Test Fixtures
code reuse
cleanup of resources
errors vs failures
focusing your thinking on what you are testing and what you are not
scoping for efficiency
Brief look at pytest named fixtures
References
pytest...
Answering a listener question.
Why testing?
What are the benefits?
Why automated testing over manual testing?
Why test first?
Why do automated testing during development?
Why test to the user level API?
After describing my ideal test strategy and...
I list my requirements for a framework and discuss how Pytest, Unittest, and Nose measure up to those requirements.
Mentioned:
pytest
unittest
nose
delayed assert
pytest-expect
doctest