Skip to content

Releases: pytest-dev/pytest

4.6.8

19 Dec 23:50
Compare
Choose a tag to compare

pytest 4.6.8 (2019-12-19)

Features

  • #5471: JUnit
    XML now includes a timestamp and hostname in the testsuite tag.

Bug Fixes

  • #5430:
    junitxml: Logs for failed test are now passed to junit report in
    case the test fails during call phase.

Trivial/Internal Changes

  • #6345: Pin
    colorama to 0.4.1 only for Python 3.4 so newer Python versions
    can still receive colorama updates.

5.3.2

14 Dec 13:38
7f24cc2
Compare
Choose a tag to compare

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

  • #5430:
    junitxml: Logs for failed test are now passed to junit report in
    case the test fails during call phase.
  • #6290: The
    supporting files in the .pytest_cache directory are kept with
    --cache-clear, which only clears cached values now.
  • #6301: Fix
    assertion rewriting for egg-based distributions and editable
    installs (pip install --editable).

4.6.7

06 Dec 01:44
Compare
Choose a tag to compare

pytest 4.6.7 (2019-12-05)

Bug Fixes

  • #5477: The XML
    file produced by --junitxml now correctly contain a <testsuites>
    root element.
  • #6044: Properly
    ignore FileNotFoundError (OSError.errno == NOENT in Python 2)
    exceptions when trying to remove old temporary directories, for
    instance when multiple processes try to remove the same directory
    (common with pytest-xdist for example).

5.3.1

26 Nov 14:56
Compare
Choose a tag to compare

pytest 5.3.1 (2019-11-25)

Improvements

  • #6231: Improve check for misspelling of pytest.mark.parametrize.
  • #6257: Handle exit.Exception raised in notify_exception (via pytest_internalerror), e.g. when quitting pdb from post mortem.

Bug Fixes

  • #5914: pytester: fix no_fnmatch_line when used after positive matching.
  • #6082: Fix line detection for doctest samples inside property docstrings, as a workaround to bpo-17446.
  • #6254: Fix compatibility with pytest-parallel (regression in pytest 5.3.0).
  • #6255: Clear the sys.last_traceback, sys.last_type and sys.last_value attributes by deleting them instead of setting them to None. This better matches the behaviour of the Python standard library.

5.3.0

19 Nov 21:48
be59827
Compare
Choose a tag to compare

pytest 5.3.0 (2019-11-19)

Deprecations

  • #6179: The
    default value of junit_family option will change to xunit2 in
    pytest 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 but
    junit_family is not explicitly configured in pytest.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 writes
    report 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 is
    deprecated and meant to be removed in a future release. If you use
    --resultlog, please try out pytest-reportlog and
    provide feedback.

  • #4730: When
    sys.pycache_prefix (Python 3.8+) is set, it will be used by pytest
    to cache test files changed by the assertion rewriting mechanism.

    This makes it easier to benefit of cached .pyc files even on file
    systems without permissions.

  • #5515: Allow
    selective auto-indentation of multiline log messages.

    Adds command line option --log-auto-indent, config option
    log_auto_indent and support for per-entry configuration of
    indentation behavior on calls to logging.log().

    Alters the default for auto-indention from on to off. This
    restores 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:

    assert re.match(pat, result.stdout.str()) is None
    

    Or the in operator:

    assert text in result.stdout.str()
    

    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 circle
    around the expected value, with a radius of 5e-06. For approx
    comparisons to return True, the actual value should fall within
    this circle.

  • #6061: Added
    the pluginmanager as an argument to pytest_addoption so that hooks
    can 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:

    E   AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...]
    E     Right contains 3 more items, first extra item: ' '
    E     Full diff:
    E     - ['version', 'version_info', 'sys.version', 'sys.version_info']
    E     + ['version',
    E     +  'version_info',
    E     +  'sys.version',
    E     +  'sys.version_info',
    E     +  ' ',
    E     +  'sys.version',
    E     +  'sys.version_info']
    

    After:

    E   AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...]
    E     Right contains 3 more items, first extra item: ' '
    E     Full diff:
    E       [
    E        'version',
    E        'version_info',
    E        'sys.version',
    E        'sys.version_info',
    E     +  ' ',
    E     +  'sys.version',
    E     +  'sys.version_info',
    E       ]
    
  • #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 a tuple to better
    convey that it should be immutable and avoid
    accidental modifications.

  • #6023:
    pytest.main now returns a pytest.ExitCode instance now, except
    for 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 FreeBSD
    anymore 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 performance
    regression with assertion rewriting on Unix.

  • #6152: Now
    parametrization will use the __name__ attribute of any object for
    the id, if present. Previously it would only use __name__ for
    functions and classes.

  • #6176: Improved
    failure reporting with pytester's Hookrecorder.assertoutcome.

  • #6181: The
    reason for a stopped session, e.g. with --maxfail / -x, now gets
    reported in the test summary.

  • #6206: Improved
    cache.set robustness and performance.

Bug Fixes

  • #2049: Fixed
    --setup-plan showing inaccurate information about
    fixture lifetimes.

  • #2548: Fixed
    line offset mismatch of skipped tests in terminal summary.

  • #6039: The
    PytestDoctestRunner is now properly invalidated when unconfiguring
    the doctest plugin.

    This is important when used with pytester's runpytest_inprocess.

  • #6047:
    BaseExceptions are now handled in saferepr, which includes
    pytest.fail.Exception etc.

  • #6074:
    pytester: fixed order of arguments in rm_rf warning when cleaning
    up temporary directories, and do not emit warnings for errors with
    os.open.

  • #6189: Fixed
    result of getmodpath method.

Trivial/Internal Changes

  • #4901:
    RunResult from pytester now displays the mnemonic of the ret
    attribute when it is a valid pytest.ExitCode value.

5.2.4

15 Nov 22:52
Compare
Choose a tag to compare

pytest 5.2.4 (2019-11-15)

Bug Fixes

  • #6194: Fix
    incorrect discovery of non-test __init__.py files.
  • #6197: Revert
    "The first test in a package (__init__.py) marked with
    @pytest.mark.skip is now correctly skipped.".

5.2.3

14 Nov 21:15
Compare
Choose a tag to compare

pytest 5.2.3 (2019-11-14)

Bug Fixes

  • #5830: The
    first test in a package (__init__.py) marked with
    @pytest.mark.skip is now correctly skipped.
  • #6099: Fix
    --trace when used with parametrized functions.
  • #6183: Using
    request as a parameter name in @pytest.mark.parametrize now
    produces a more user-friendly error.

5.2.2

25 Oct 00:09
Compare
Choose a tag to compare

pytest 5.2.2 (2019-10-24)

Bug Fixes

  • #5206: Fix
    --nf to not forget about known nodeids with partial
    test selection.
  • #5906: Fix
    crash with KeyboardInterrupt during --setup-show.
  • #5946: Fixed
    issue when parametrizing fixtures with numpy arrays (and possibly
    other sequence-like types).
  • #6044: Properly
    ignore FileNotFoundError exceptions when trying to remove old
    temporary directories, for instance when multiple processes try to
    remove the same directory (common with pytest-xdist for example).

4.6.6

13 Oct 14:54
Compare
Choose a tag to compare

pytest 4.6.6 (2019-10-11)

Bug Fixes

  • #5523: Fixed
    using multiple short options together in the command-line (for
    example -vs) in Python 3.8+.
  • #5537: Replace
    importlib_metadata backport with importlib.metadata from the
    standard library on Python 3.8+.
  • #5806: Fix
    "lexer" being used when uploading to bpaste.net from --pastebin
    to "text".
  • #5902: Fix
    warnings about deprecated cmp attribute in attrs>=19.2.

Trivial/Internal Changes

  • #5801: Fixes
    python version checks (detected by flake8-2020) in case python4
    becomes a thing.

5.2.1

06 Oct 15:51
Compare
Choose a tag to compare

pytest 5.2.1 (2019-10-06)

Bug Fixes

  • #5902: Fix
    warnings about deprecated cmp attribute in attrs>=19.2.