Test & Code cover image

Test & Code

125: pytest 6 - Anthony Sottile

Aug 7, 2020
01:00:05

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 / changelog

Some of what we talk about:

  • How to update (at least, how I do it)
    • Run your test suites with 5.4.3 or whatever the last version you were using
    • Update to 6
    • Run again. Same output? Probably good.
    • If there are any warnings, maybe fix those.
    • You can also run with pytest -W error to turn warnings into errors.
    • Then find out all the cool stuff you can do now
  • New Features
    • pytest now supports pyproject.toml files for configuration.
      • but remember, toml syntax is different than ini files. mostly quotes are needed
    • pytest now includes inline type annotations and exposes them to user programs.
      • Most of the user-facing API is covered, as well as internal code.
    • New command-line flags --no-header and --no-summary
    • A warning is now shown when an unknown key is read from a config INI file.
      • The --strict-config flag has been added to treat these warnings as errors.
    • New required_plugins configuration option allows the user to specify a list of plugins, including version information, that are required for pytest to run. An error is raised if any required plugins are not found when running pytest.
  • Improvements
    • You can now pass output to things like less and head that close the pipe passed to them.
      • thank you!!!
    • Improved precision of test durations measurement.
      • use --durations=10 -vv to capture and show durations
    • Rich comparison for dataclasses and attrs-classes is now recursive.
    • pytest --version now displays just the pytest version,
      • while pytest --version --version displays more verbose information including plugins.
    • --junitxml now includes the exception cause in the message XML attribute for failures during setup and teardown.
  • Improved Documentation
    • Add a note about --strict and --strict-markers and the preference for the latter one.
    • Explain indirect parametrization and markers for fixtures.
  • Bug Fixes
  • Deprecations
  • Trivial/Internal Changes
  • Breaking Changes you might need to care about before upgrading
    • PytestDeprecationWarning are now errors by default.
    • -k and -m internals were rewritten to stop using eval(), this results in a few slight changes but overall makes them much more consistent
    • testdir.run().parseoutcomes() now always returns the parsed nouns in plural form.
      • I'd say that's an improvement

Special Guest: Anthony Sottile.

Sponsored By:

Links:

★ Support this podcast on Patreon ★

Get the Snipd
podcast app

Unlock the knowledge in podcasts with the podcast player of the future.
App store bannerPlay store banner

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode

Save any
moment

Hear something you like? Tap your headphones to save it with AI-generated key takeaways

Share
& Export

Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode