Skip to content

Releases: pytest-dev/pytest

5.2.0

29 Sep 13:05
Compare
Choose a tag to compare

pytest 5.2.0 (2019-09-28)

Deprecations

  • #1682: Passing
    arguments to pytest.fixture() as positional arguments is
    deprecated - pass them as a keyword argument instead.

Features

  • #1682: The
    scope parameter of @pytest.fixture can now be a callable that
    receives the fixture name and the config object as keyword-only
    parameters. See the
    docs
    for
    more information.
  • #5764: New
    behavior of the --pastebin option: failures to connect to the
    pastebin server are reported, without failing the pytest run

Bug Fixes

  • #5806: Fix
    "lexer" being used when uploading to bpaste.net from --pastebin
    to "text".
  • #5884: Fix
    --setup-only and --setup-show for custom pytest items.

Trivial/Internal Changes

  • #5056: The
    HelpFormatter uses py.io.get_terminal_width for better
    width detection.

5.1.3

21 Sep 13:50
Compare
Choose a tag to compare

pytest 5.1.3 (2019-09-18)

Bug Fixes

  • #5807: Fix
    pypy3.6 (nightly) on windows.
  • #5811: Handle
    --fulltrace correctly with pytest.raises.
  • #5819: Windows:
    Fix regression with conftest whose qualified name contains uppercase
    characters (introduced by #5792).

5.1.2

30 Aug 19:03
Compare
Choose a tag to compare

pytest 5.1.2 (2019-08-30)

Bug Fixes

  • #2270: Fixed
    self reference in function-scoped fixtures defined plugin classes:
    previously self would be a reference to a test class, not the
    plugin class.
  • #570: Fixed long
    standing issue where fixture scope was not respected when indirect
    fixtures were used during parametrization.
  • #5782: Fix
    decoding error when printing an error response from --pastebin.
  • #5786: Chained
    exceptions in test and collection reports are now correctly
    serialized, allowing plugins like pytest-xdist to display
    them properly.
  • #5792: Windows:
    Fix error that occurs in certain circumstances when loading
    conftest.py from a working directory that has casing other than
    the one stored in the filesystem (e.g., c:\test instead of
    C:\test).

5.1.1

20 Aug 21:36
Compare
Choose a tag to compare

pytest 5.1.1 (2019-08-20)

Bug Fixes

  • #5751: Fixed
    TypeError when importing pytest on Python 3.5.0 and 3.5.1.

5.1.0

16 Aug 01:49
Compare
Choose a tag to compare

pytest 5.1.0 (2019-08-15)

Removals

  • #5180: As per
    our policy, the following features have been deprecated in the 4.X
    series and are now removed:

    • Request.getfuncargvalue: use Request.getfixturevalue
      instead.
    • pytest.raises and pytest.warns no longer support strings as
      the second argument.
    • message parameter of pytest.raises.
    • pytest.raises, pytest.warns and ParameterSet.param now use
      native keyword-only syntax. This might change the exception
      message from previous versions, but they still raise TypeError
      on unknown keyword arguments as before.
    • pytest.config global variable.
    • tmpdir_factory.ensuretemp method.
    • pytest_logwarning hook.
    • RemovedInPytest4Warning warning type.
    • request is now a reserved name for fixtures.

    For more information consult Deprecations and
    Removals
    in
    the docs.

  • #5565: Removed
    unused support code for
    unittest2.

    The unittest2 backport module is no longer necessary since Python
    3.3+, and the small amount of code in pytest to support it also
    doesn't seem to be used: after removed, all tests still pass
    unchanged.

    Although our policy is to introduce a deprecation period before
    removing any features or support for third party libraries, because
    this code is apparently not used at all (even if unittest2 is used
    by a test suite executed by pytest), it was decided to remove it in
    this release.

    If you experience a regression because of this, please file an
    issue
    .

  • #5615:
    pytest.fail, pytest.xfail and pytest.skip no longer support
    bytes for the message argument.

    This was supported for Python 2 where it was tempting to use
    "message" instead of u"message".

    Python 3 code is unlikely to pass bytes to these functions. If you
    do, please decode it to an str beforehand.

Features

  • #5564: New
    Config.invocation_args attribute containing the unchanged
    arguments passed to pytest.main().
  • #5576: New
    NUMBER
    option for doctests to ignore irrelevant differences in
    floating-point numbers. Inspired by Sébastien Boisgérault's
    numtest extension for
    doctest.

Improvements

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

  • #5707: Time
    taken to run the test suite now includes a human-readable
    representation when it takes over 60 seconds, for example:

    ===== 2 failed in 102.70s (0:01:42) =====
    

Bug Fixes

  • #4344: Fix
    RuntimeError/StopIteration when trying to collect package with
    "__init__.py" only.
  • #5115: Warnings
    issued during pytest_configure are explicitly not treated as
    errors, even if configured as such, because it otherwise completely
    breaks pytest.
  • #5477: The XML
    file produced by --junitxml now correctly contain a <testsuites>
    root element.
  • #5523: Fixed
    using multiple short options together in the command-line (for
    example -vs) in Python 3.8+.
  • #5524: Fix
    issue where tmp_path and tmpdir would not remove directories
    containing files marked as read-only, which could lead to pytest
    crashing when executed a second time with the --basetemp option.
  • #5537: Replace
    importlib_metadata backport with importlib.metadata from the
    standard library on Python 3.8+.
  • #5578: Improve
    type checking for some exception-raising functions (pytest.xfail,
    pytest.skip, etc) so they provide better error messages when users
    meant to use marks (for example @pytest.xfail instead of
    @pytest.mark.xfail).
  • #5606: Fixed
    internal error when test functions were patched with objects that
    cannot be compared for truth values against others, like numpy
    arrays.
  • #5634:
    pytest.exit is now correctly handled in unittest cases. This
    makes unittest cases handle quit from pytest's pdb correctly.
  • #5650: Improved
    output when parsing an ini configuration file fails.
  • #5701: Fix
    collection of staticmethod objects defined with
    functools.partial.
  • #5734: Skip
    async generator test functions, and update the warning message to
    refer to async def functions.

Improved Documentation

  • #5669: Add
    docstring for Testdir.copy_example.

Trivial/Internal Changes

  • #5095: XML
    files of the xunit2 family are now validated against the schema by
    pytest's own test suite to avoid future regressions.
  • #5516: Cache
    node splitting function which can improve collection performance in
    very large test suites.
  • #5603:
    Simplified internal SafeRepr class and removed some dead code.
  • #5664: When
    invoking pytest's own testsuite with PYTHONDONTWRITEBYTECODE=1,
    the test_xfail_handling test no longer fails.
  • #5684: Replace
    manual handling of OSError.errno in the codebase by new OSError
    subclasses (PermissionError, FileNotFoundError, etc.).

4.6.5

09 Aug 12:04
Compare
Choose a tag to compare

Bug Fixes

  • #4344: Fix RuntimeError/StopIteration when trying to collect package with "init.py" only.

  • #5478: Fix encode error when using unicode strings in exceptions with pytest.raises.

  • #5524: Fix issue where tmp_path and tmpdir would not remove directories containing files marked as read-only,
    which could lead to pytest crashing when executed a second time with the --basetemp option.

  • #5547: --step-wise now handles xfail(strict=True) markers properly.

  • #5650: Improved output when parsing an ini configuration file fails.

5.0.1

10 Aug 15:10
Compare
Choose a tag to compare

pytest 5.0.1 (2019-07-04)

Bug Fixes

  • #5479: Improve
    quoting in raises match failure message.
  • #5523: Fixed
    using multiple short options together in the command-line (for
    example -vs) in Python 3.8+.
  • #5547:
    --step-wise now handles xfail(strict=True) markers properly.

Improved Documentation

  • #5517: Improve
    "Declaring new hooks" section in chapter "Writing Plugins"