Python Test

125: pytest 6 - Anthony Sottile

08.07.2020 - By Brian OkkenPlay

Download our free app to listen on your phone

Download on the App StoreGet it on Google Play

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.

Check the deprecations and removals

page if you are curious.

-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:Datadog: Modern monitoring & security. See inside any stack, any app, at any scale, anywhere.

Visit testandcode.com/datadog to get started.Links:pytest Changelog / Release NotesDeprecations and Removals — pytest documentation

More episodes from Python Test