Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==5.2.2
->==5.4.3
Release Notes
pytest-dev/pytest (pytest)
v5.4.3
Compare Source
pytest 5.4.3 (2020-06-02)
Bug Fixes
changed since the start of the session.
ConfTestImportFailure
is raised.--pdb
would call thetearDown
methods ofunittest.TestCase
subclasses for skipped tests.
v5.4.2
Compare Source
pytest 5.4.2 (2020-05-08)
Bug Fixes
unittest.IsolatedAsyncioTestCase
is actually awaited.TestCase.addCleanup
were not being called on test failures.TerminalReporter.writer
attribute.asyncbase.TestCase
tests are executed correctly again.File.from_constructor
so it forwards extra keyword arguments to the constructor.__getattribute__
methods are displayed correctly during failures._is_setup_py
for files encoded differently than locale.v5.4.1
Compare Source
pytest 5.4.1 (2020-03-13)
Bug Fixes
#6909: Revert the change introduced by #6330, which required all arguments to
@pytest.mark.parametrize
to be explicitly defined in the function signature.The intention of the original change was to remove what was expected to be an unintended/surprising behavior, but it turns out many people relied on it, so the restriction has been reverted.
#6910: Fix crash when plugins return an unknown stats while using the
--reportlog
option.v5.4.0
: pytest 5.4.0 (2020-03-12)Compare Source
Breaking Changes
#6316: Matching of
-k EXPRESSION
to test names is now case-insensitive.#6443: Plugins specified with
-p
are now loaded after internal plugins, which results in their hooks being called before the internal ones.This makes the
-p
behavior consistent withPYTEST_PLUGINS
.#6637: Removed the long-deprecated
pytest_itemstart
hook.This hook has been marked as deprecated and not been even called by pytest for over 10 years now.
#6673: Reversed / fix meaning of "+/-" in error diffs. "-" means that sth. expected is missing in the result and "+" means that there are unexpected extras in the result.
#6737: The
cached_result
attribute ofFixtureDef
is now set toNone
whenthe result is unavailable, instead of being deleted.
If your plugin performs checks like
hasattr(fixturedef, 'cached_result')
,for example in a
pytest_fixture_post_finalizer
hook implementation, replaceit with
fixturedef.cached_result is not None
. If youdel
the attribute,set it to
None
instead.Deprecations
#3238: Option
--no-print-logs
is deprecated and meant to be removed in a future release. If you use--no-print-logs
, please try out--show-capture
andprovide feedback.
--show-capture
command-line option was added inpytest 3.5.0
and allows to specify how todisplay captured output when tests fail:
no
,stdout
,stderr
,log
orall
(the default).#571: Deprecate the unused/broken [pytest_collect_directory]{.title-ref} hook.
It was misaligned since the removal of the
Directory
collector in 2010and incorrect/unusable as soon as collection was split from test execution.
#5975: Deprecate using direct constructors for
Nodes
.Instead they are new constructed via
Node.from_parent
.This transitional mechanism enables us to detangle the very intensely
entangled
Node
relationships by enforcing more controlled creation/configruation patterns.As part of that session/config are already disallowed parameters and as we work on the details we might need disallow a few more as well.
Subclasses are expected to use [super().from_parent]{.title-ref} if they intend to expand the creation of [Nodes]{.title-ref}.
#6779: The
TerminalReporter.writer
attribute has been deprecated and should no longer be used. Thiswas inadvertently exposed as part of the public API of that plugin and ties it too much
with
py.io.TerminalWriter
.Features
--capture=tee-sys <capture-method>
{.interpreted-text role="ref"} option to allow both live printing and capturing of test output.@pytest.mark.parametrize
need to be explicitly declared in the function signature or viaindirect
.Previously it was possible to omit an argument if a fixture with the same name existed, which was just an accident of implementation and was not meant to be a part of the API.
short test summary <pytest.detailed_failed_tests_usage>
{.interpreted-text role="ref"}. [-rN]{.title-ref} can be used to disable it (the old behavior).junit_logging
{.interpreted-text role="confval"} option:log
,out-err
, andall
.Improvements
#1857:
pytest.mark.parametrize
accepts integers forids
again, converting it to strings.#449: Use "yellow" main color with any XPASSED tests.
#4639: Revert "A warning is now issued when assertions are made for
None
".The warning proved to be less useful than initially expected and had quite a
few false positive cases.
#5686:
tmpdir_factory.mktemp
now fails when given absolute and non-normalized paths.#5984: The
pytest_warning_captured
hook now receives alocation
parameter with the code location that generated the warning.#6213: pytester: the
testdir
fixture respects environment settings from themonkeypatch
fixture for inner runs.#6247:
--fulltrace
is honored with collection errors.#6384: Make [--showlocals]{.title-ref} work also with [--tb=short]{.title-ref}.
#6653: Add support for matching lines consecutively with
LineMatcher <_pytest.pytester.LineMatcher>
{.interpreted-text role="attr"}'s~_pytest.pytester.LineMatcher.fnmatch_lines
{.interpreted-text role="func"} and~_pytest.pytester.LineMatcher.re_match_lines
{.interpreted-text role="func"}.#6658: Code is now highlighted in tracebacks when
pygments
is installed.Users are encouraged to install
pygments
into their environment and provide feedback, becausethe plan is to make
pygments
a regular dependency in the future.#6795: Import usage error message with invalid [-o]{.title-ref} option.
#759:
pytest.mark.parametrize
supports iterators and generators forids
.Bug Fixes
#310: Add support for calling [pytest.xfail()]{.title-ref} and [pytest.importorskip()]{.title-ref} with doctests.
#3823:
--trace
now works with unittests.#4445: Fixed some warning reports produced by pytest to point to the correct location of the warning in the user's code.
#5301: Fix
--last-failed
to collect new tests from files with known failures.#5928: Report
PytestUnknownMarkWarning
at the level of the user's code, notpytest
's.#5991: Fix interaction with
--pdb
and unittests: do not use unittest'sTestCase.debug()
.#6334: Fix summary entries appearing twice when
f/F
ands/S
report chars were used at the same time in the-r
command-line option (for example-rFf
).The upper case variants were never documented and the preferred form should be the lower case.
#6409: Fallback to green (instead of yellow) for non-last items without previous passes with colored terminal progress indicator.
#6454: [--disable-warnings]{.title-ref} is honored with [-ra]{.title-ref} and [-rA]{.title-ref}.
#6497: Fix bug in the comparison of request key with cached key in fixture.
A construct
if key == cached_key:
can fail either because==
is explicitly disallowed, or for, e.g., NumPy arrays, where the result ofa == b
cannot generally be converted to [bool]{.title-ref}.The implemented fix replaces [==]{.title-ref} with
is
.#6557: Make capture output streams
.write()
method return the same return value from original streams.#6566: Fix
EncodedFile.writelines
to call the underlying buffer'swritelines
method.#6575: Fix internal crash when
faulthandler
starts initialized(for example with
PYTHONFAULTHANDLER=1
environment variable set) andfaulthandler_timeout
definedin the configuration file.
#6597: Fix node ids which contain a parametrized empty-string variable.
#6646: Assertion rewriting hooks are (re)stored for the current item, which fixes them being still used after e.g. pytester's
testdir.runpytest <_pytest.pytester.Testdir.runpytest>
{.interpreted-text role="func"} etc.#6660:
pytest.exit() <_pytest.outcomes.exit>
{.interpreted-text role="func"} is handled when emitted from thepytest_sessionfinish <_pytest.hookspec.pytest_sessionfinish>
{.interpreted-text role="func"} hook. This includes quitting from a debugger.#6752: When :py
pytest.raises
{.interpreted-text role="func"} is used as a function (as opposed to a context manager),a [match]{.title-ref} keyword argument is now passed through to the tested function. Previously
it was swallowed and ignored (regression in pytest 5.1.0).
#6801: Do not display empty lines inbetween traceback for unexpected exceptions with doctests.
#6802: The
testdir fixture <testdir>
{.interpreted-text role="fixture"} works within doctests now.Improved Documentation
Trivial/Internal Changes
parser
module, deprecated in Python 3.9.v5.3.5
Compare Source
pytest 5.3.5 (2020-01-29)
Bug Fixes
regression in pytest 5.3.4 causing an INTERNALERROR due to a wrong
assertion.
v5.3.4
Compare Source
pytest 5.3.4 (2020-01-20)
Bug Fixes
#6436:
unfortunately this change has caused a number of regressions in many
suites, so the team decided to revert this change and make a new
release while we continue to look for a solution.
v5.3.3
Compare Source
pytest 5.3.3 (2020-01-16)
Bug Fixes
output during teardown is shown with
-rP
.pytest-xdist
crash when dealing with exceptions raised insubprocesses created by the
multiprocessing
module.FixtureDef <_pytest.fixtures.FixtureDef> objects now properly
register their finalizers with autouse and parameterized fixtures
that execute before them in the fixture stack so they are torn down
at the right times, and in the right order.
parsing of outcomes containing multiple errors with
testdir
results (regression in 5.3.0).
Trivial/Internal Changes
Optimized automatic renaming of test parameter IDs.
v5.3.2
Compare Source
pytest 5.3.2 (2019-12-13)
Improvements
#4639: Revert
"A warning is now issued when assertions are made for
None
".The warning proved to be less useful than initially expected and had
quite a few false positive cases.
Bug Fixes
junitxml: Logs for failed test are now passed to junit report in
case the test fails during call phase.
supporting files in the
.pytest_cache
directory are kept with--cache-clear
, which only clears cached values now.assertion rewriting for egg-based distributions and
editable
installs (
pip install --editable
).v5.3.1
Compare Source
pytest 5.3.1 (2019-11-25)
Improvements
pytest.mark.parametrize
.Bug Fixes
no_fnmatch_line
when used after positive matching.property
docstrings, as a workaround to bpo-17446.sys.last_traceback
,sys.last_type
andsys.last_value
attributes by deleting them instead of setting them toNone
. This better matches the behaviour of the Python standard library.v5.3.0
Compare Source
pytest 5.3.0 (2019-11-19)
Deprecations
#6179: The
default value of
junit_family
option will change toxunit2
inpytest 6.0, given that this is the version supported by default in
modern tools that manipulate this type of file.
In order to smooth the transition, pytest will issue a warning in
case the
--junitxml
option is given in the command line butjunit_family
is not explicitly configured inpytest.ini
.For more information, see the
docs.
Features
#4488: The
pytest team has created the
pytest-reportlog
plugin, which provides a new
--report-log=FILE
option that writesreport logs into a file as the test session executes.
Each line of the report log contains a self contained JSON object
corresponding to a testing event, such as a collection or a test
result report. The file is guaranteed to be flushed after writing
each line, so systems can read and process events in real-time.
The plugin is meant to replace the
--resultlog
option, which isdeprecated and meant to be removed in a future release. If you use
--resultlog
, please try outpytest-reportlog
andprovide feedback.
#4730: When
sys.pycache_prefix
(Python 3.8+) is set, it will be used by pytestto cache test files changed by the assertion rewriting mechanism.
This makes it easier to benefit of cached
.pyc
files even on filesystems without permissions.
#5515: Allow
selective auto-indentation of multiline log messages.
Adds command line option
--log-auto-indent
, config optionlog_auto_indent
and support for per-entry configuration ofindentation behavior on calls to
logging.log()
.Alters the default for auto-indention from
on
tooff
. Thisrestores the older behavior that existed prior to v4.6.0. This
reversion to earlier behavior was done because it is better to
activate new features that may lead to broken tests explicitly
rather than implicitly.
#5914:
pytester
learned two new functions,no_fnmatch_line
and
no_re_match_line.
The functions are used to ensure the captured text does not match
the given pattern.
The previous idiom was to use
re.match
:Or the
in
operator:But the new functions produce best output on failure.
#6057: Added
tolerances to complex values when printing
pytest.approx
.For example,
repr(pytest.approx(3+4j))
returns(3+4j) ± 5e-06 ∠ ±180°
. This is polar notation indicating a circlearound the expected value, with a radius of 5e-06. For
approx
comparisons to return
True
, the actual value should fall withinthis circle.
#6061: Added
the pluginmanager as an argument to
pytest_addoption
so that hookscan be invoked when setting up command line options. This is useful
for having one plugin communicate things to another plugin, such as
default values or which set of command line options to add.
Improvements
#5061: Use
multiple colors with terminal summary statistics.
#5630: Quitting
from debuggers is now properly handled in
doctest
items.#5924: Improved
verbose diff output with sequences.
Before:
After:
#5936: Display
untruncated assertion message with
-vv
.#5990: Fixed
plurality mismatch in test summary (e.g. display "1 error" instead
of "1 errors").
#6008:
Config.InvocationParams.args
is now always atuple
to betterconvey that it should be immutable and avoid
accidental modifications.
#6023:
pytest.main
now returns apytest.ExitCode
instance now, exceptfor when custom exit codes are used (where it returns
int
then still).
#6026: Align
prefixes in output of pytester's
LineMatcher
.#6059:
Collection errors are reported as errors (and not failures
like before) in the terminal's short test summary.
#6069:
pytester.spawn
does not skip/xfail tests on FreeBSDanymore unconditionally.
#6097: The
"[XXX%]" indicator in the test summary is now colored according to
the final (new) multi-colored line's main color.
#6116: Added
--co
as a synonym to--collect-only
.#6148:
atomicwrites
is now only used on Windows, fixing a performanceregression with assertion rewriting on Unix.
#6152: Now
parametrization will use the
__name__
attribute of any object forthe id, if present. Previously it would only use
__name__
forfunctions and classes.
#6176: Improved
failure reporting with pytester's
Hookrecorder.assertoutcome
.#6181: The
reason for a stopped session, e.g. with
--maxfail
/-x
, now getsreported in the test summary.
#6206: Improved
cache.set
robustness and performance.Bug Fixes
#2049: Fixed
--setup-plan
showing inaccurate information aboutfixture lifetimes.
#2548: Fixed
line offset mismatch of skipped tests in terminal summary.
#6039: The
PytestDoctestRunner
is now properly invalidated when unconfiguringthe doctest plugin.
This is important when used with
pytester
'srunpytest_inprocess
.#6047:
BaseExceptions are now handled in
saferepr
, which includespytest.fail.Exception
etc.#6074:
pytester: fixed order of arguments in
rm_rf
warning when cleaningup temporary directories, and do not emit warnings for errors with
os.open
.#6189: Fixed
result of
getmodpath
method.Trivial/Internal Changes
RunResult
frompytester
now displays the mnemonic of theret
attribute when it is a valid
pytest.ExitCode
value.v5.2.4
Compare Source
pytest 5.2.4 (2019-11-15)
Bug Fixes
incorrect discovery of non-test
__init__.py
files."The first test in a package (
__init__.py
) marked with@pytest.mark.skip
is now correctly skipped.".v5.2.3
Compare Source
pytest 5.2.3 (2019-11-14)
Bug Fixes
first test in a package (
__init__.py
) marked with@pytest.mark.skip
is now correctly skipped.--trace
when used with parametrized functions.request
as a parameter name in@pytest.mark.parametrize
nowproduces a more user-friendly error.
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.