We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Talks - Paul Ganssle: pytest for unittesters
Learn how pytest improves on unittest with better error messages, simpler assertions, powerful fixtures, and an active plugin ecosystem - while allowing gradual migration.
- 
    PyTest is now considered the standard way to do testing in Python, with broad ecosystem support and active development 
- 
    Allows incremental migration from unittest - can mix PyTest and unittest code in the same codebase while transitioning 
- 
    Key advantages over unittest: - Uses plain assert statements instead of assertion methods
- Provides detailed error messages with actual vs expected values
- Optional class usage - tests can be simple functions
- Powerful fixture system for test setup/teardown
- Built-in parameterized testing support
- Extensive plugin ecosystem
 
- 
    Fixtures provide modular, composable test setup: - Can be used across multiple tests
- Support setup and teardown via yield
- Can be stacked and combined
- Allow parameter passing
 
- 
    Strong debugging capabilities: - –pdb flag drops into debugger on test failure
- -L flag shows local variables
- –stepwise mode to run from last failure
- xdist plugin for parallel test execution
 
- 
    Configuration flexibility: - Highly customizable through plugins
- Supports various output formats
- Can maintain existing unittest conventions while adopting PyTest features
 
- 
    Common concerns about “magic” behavior haven’t been problematic in practice: - Test discovery conventions are configurable
- Assertion rewriting provides better error messages
- Core functionality is stable and well-tested
 
- 
    Testing Django: - Works well with django-pytest plugin
- Some database fixture scenarios need special handling
- Active community support for Django integration