Tool News

PyTest 9.0.3 Released — What’s New 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...

4 min read
Advertisement
What You Will Learn
What's New in PyTest 9.0.3
Official Release Notes
How to Upgrade
🚀 PyTest 9.0.3 Released — What’s New 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…

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=1 to catch early issues
  • ✅ Check custom conftest.py logic (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.

Advertisement
Found this helpful? Clap to let Shahnawaz know — you can clap up to 50 times.