What’s New in PyTest 9.0.3 PyTest version 9.0.3 was released on April 07, 2026. Here is a summary of what changed and what it means for QA engineers…
What’s New in PyTest 9.0.3
PyTest version 9.0.3 was released on April 07, 2026.
Here is a summary of what changed and what it means for QA engineers and SDETs.
Official Release Notes
# pytest 9.0.3 (2026-04-07)
## Bug fixes
- [\#12444](https://github.com/pytest-dev/pytest/issues/12444): Fixed `pytest.approx` which now correctly takes into account `~collections.abc.Mapping` keys order to compare them.
- [\#13634](https://github.com/pytest-dev/pytest/issues/13634): Blocking a `conftest.py` file using the `-p no:` option is now explicitly disallowed.
Previously this resulted in an internal assertion failure during plugin loading.
Pytest now raises a clear `UsageError` explaining that conftest files are not plugins and cannot be disabled via `-p`.
- [\#13734](https://github.com/pytest-dev/pytest/issues/13734): Fixed crash when a test raises an exceptiongroup with `__tracebackhide__ = True`.
- [\#14195](https://github.com/pytest-dev/pytest/issues/14195): Fixed an issue where non-string messages passed to unittest.TestCase.subTest() were not printed.
- [\#14343](https://github.com/pytest-dev/pytest/issues/14343): Fixed use of insecure temporary directory (CVE-2025-71176).
## Improved documentation
- [\#13388](https://github.com/pytest-dev/pytest/issues/13388): Clarified documentation for `-p` vs `PYTEST_PLUGINS` plugin loading and fixed an incorrect `-p` example.
- [\#13731](https://github.com/pytest-dev/pytest/issues/13731): Clarified that capture fixtures (e.g. `capsys` and `capfd`) take precedence over the `-s` / `--capture=no` command-line options in `Accessing captured output from a test function <accessing-capt...How to Upgrade
# For Python tools
pip install pytest --upgrade
# For Node.js tools
npm install pytest@latest
Full release notes: https://github.com/pytest-dev/pytest/releases/tag/9.0.3 👇
🚀 PyTest 9.0.3 Released — What’s New for QA Engineers
The latest release of pytest 9.0.3 is not about flashy features — it’s about something more critical:
⚙️ Accuracy, stability, and developer clarity
Let’s break down what actually matters 👇
🔑 Key Improvement 1 — More Accurate pytest.approx Comparisons
What changed:pytest.approx now correctly respects mapping (dictionary) key order during comparisons. (GitHub)
Why this was needed:
Previously, comparisons involving dictionaries could behave inconsistently — especially in edge cases where order mattered in validation logic.
My expert take:
👉 This fix looks small… but it’s huge for data-heavy testing.
- API response validation
- JSON contract testing
- Financial/data-sensitive assertions
How it helps QA engineers:
- More trustworthy assertions
- Reduced false positives/negatives
- Better confidence in automated validations
🔑 Key Improvement 2 — Clearer Error Handling for Plugin Misuse
What changed:
Trying to disable conftest.py using -p no: now throws a clear UsageError instead of crashing internally. (GitHub)
Why this was needed:
Earlier behavior caused confusing internal assertion failures — hard to debug, especially for teams using custom plugins or shared configs.
My expert take:
👉 This is a developer experience win.
- Turns silent failure → explicit guidance
- Prevents misuse of pytest architecture
How it helps QA engineers:
- Faster debugging
- Cleaner CI/CD logs
- Less time wasted on “WTF is this error?” moments
⚠️ Any Breaking Changes — What You Should Know
Good news:
👉 No major breaking changes in 9.0.3 (it’s a patch release focused on bug fixes).
But… important nuance:
- PyTest 9.x itself is a major version line
- Some older plugins or legacy patterns may already be incompatible
My recommendation:
- If you’re already on 9.x → ✅ safe to upgrade immediately
- If you’re on older versions (7.x/8.x) → ⚠️ test plugin compatibility first
🔄 Migration Notes (Real-World Advice)
Before upgrading:
- ✅ Validate your plugins (pytest-xdist, pytest-asyncio, etc.)
- ✅ Run tests in CI with
--maxfail=1to catch early issues - ✅ Check custom
conftest.pylogic (now stricter behavior)
👉 Treat upgrades like pipeline changes, not just dependency bumps
🧠 Final Verdict — Should You Upgrade?
✔ YES — Upgrade if:
- You rely on data comparisons (APIs, JSON, analytics)
- You want cleaner error handling
- You’re already on PyTest 9.x
⏳ WAIT if:
- Your framework depends on legacy plugins
- You haven’t validated compatibility yet
💡 Blog Punchline (Use This 🔥)
“PyTest 9.0.3 doesn’t add features — it removes doubt.
And in testing, confidence is the real feature.”
This article is part of QA Pulse by SK — your weekly signal for QA, Test Automation and AI in Software Engineering. Subscribe free.