Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pytest versions available: 3.0.0 #3

Open
dependencies bot opened this issue Nov 4, 2017 · 0 comments
Open

pytest versions available: 3.0.0 #3

dependencies bot opened this issue Nov 4, 2017 · 0 comments

Comments

@dependencies
Copy link

dependencies bot commented Nov 4, 2017

There are new versions of pytest available from pypi.

3.0.0

Incompatible changes

A number of incompatible changes were made in this release, with the
intent of removing features deprecated for a long time or change
existing behaviors in order to make them less surprising/more useful.

  • Reinterpretation mode has now been removed. Only plain and rewrite
    mode are available, consequently the --assert=reinterp option is
    no longer available. This also means files imported from plugins or
    conftest.py will not benefit from improved assertions by default,
    you should use pytest.register_assert_rewrite() to explicitly turn
    on assertion rewriting for those files. Thanks
    flub for the PR.

  • The following deprecated commandline options were removed:

    • --genscript: no longer supported;
    • --no-assert: use --assert=plain instead;
    • --nomagic: use --assert=plain instead;
    • --report: use -r instead;

    Thanks to RedBeardCode for the
    PR (#1664).

  • ImportErrors in plugins now are a fatal error instead of issuing a
    pytest warning
    (#1479). Thanks
    to The-Compiler for the PR.

  • Removed support code for Python 3 versions < 3.3
    (#1627).

  • Removed all py.test-X* entry points. The versioned, suffixed entry
    points were never documented and a leftover from a pre-virtualenv
    era. These entry points also created broken entry points in wheels,
    so removing them also removes a source of confusion for users
    (#1632). Thanks
    obestwalter for the PR.

  • pytest.skip() now raises an error when used to decorate a test
    function, as opposed to its original intent (to imperatively skip a
    test inside a test function). Previously this usage would cause the
    entire module to be skipped
    (#607). Thanks
    omarkohl for the complete PR
    (#1519).

  • Exit tests if a collection error occurs. A poll indicated most users
    will hit CTRL-C anyway as soon as they see collection errors, so
    pytest might as well make that the default behavior
    (#1421). A
    --continue-on-collection-errors option has been added to restore
    the previous behaviour. Thanks
    olegpidsadnyi and
    omarkohl for the complete PR
    (#1628).

  • Renamed the pytest pdb module (plugin) into debugging to avoid
    clashes with the builtin pdb module.

  • Raise a helpful failure message when requesting a parametrized
    fixture at runtime, e.g. with request.getfixturevalue. Previously
    these parameters were simply never defined, so a fixture decorated
    like @pytest.fixture(params=[0, 1, 2]) only ran once
    (#460). Thanks to
    nikratio for the bug report,
    RedBeardCode and
    tomviner for the PR.

  • _pytest.monkeypatch.monkeypatch class has been renamed to
    _pytest.monkeypatch.MonkeyPatch so it doesn't conflict with the
    monkeypatch fixture.

  • --exitfirst / -x can now be overridden by a following
    --maxfail=N and is just a synonym for --maxfail=1.

New Features

  • Support nose-style __test__ attribute on methods of classes,
    including unittest-style Classes. If set to False, the test will
    not be collected.

  • New doctest_namespace fixture for injecting names into the
    namespace in which doctests run. Thanks
    milliams for the complete PR
    (#1428).

  • New --doctest-report option available to change the output format
    of diffs when running (failing) doctests (implements
    #1749). Thanks
    hartym for the PR.

  • New name argument to pytest.fixture decorator which allows a
    custom name for a fixture (to solve the funcarg-shadowing-fixture
    problem). Thanks novas0x2a for the
    complete PR
    (#1444).

  • New approx() function for easily comparing floating-point numbers
    in tests. Thanks kalekundert for
    the complete PR
    (#1441).

  • Ability to add global properties in the final xunit output file by
    accessing the internal junitxml plugin (experimental). Thanks
    tareqalayan for the complete PR
    #1454).

  • New ExceptionInfo.match() method to match a regular expression on
    the string representation of an exception
    (#372). Thanks
    omarkohl for the complete PR
    (#1502).

  • __tracebackhide__ can now also be set to a callable which then can
    decide whether to filter the traceback based on the ExceptionInfo
    object passed to it. Thanks
    The-Compiler for the complete PR
    (#1526).

  • New pytest_make_parametrize_id(config, val) hook which can be used
    by plugins to provide friendly strings for custom types. Thanks
    palaviv for the PR.

  • capsys and capfd now have a disabled() context-manager method,
    which can be used to temporarily disable capture within a test.
    Thanks nicoddemus for the PR.

  • New cli flag --fixtures-per-test: shows which fixtures are being
    used for each selected test item. Features doc strings of fixtures
    by default. Can also show where fixtures are defined if combined
    with -v. Thanks hackebrot for the
    PR.

  • Introduce pytest command as recommended entry point. Note that
    py.test still works and is not scheduled for removal. Closes
    proposal #1629.
    Thanks obestwalter and
    davehunt for the complete PR
    (#1633).

  • New cli flags:

    • --setup-plan: performs normal collection and reports the
      potential setup and teardown and does not execute any fixtures
      and tests;
    • --setup-only: performs normal collection, executes setup and
      teardown of fixtures and reports them;
    • --setup-show: performs normal test execution and additionally
      shows setup and teardown of fixtures;
    • --keep-duplicates: py.test now ignores duplicated paths given
      in the command line. To retain the previous behavior where the
      same test could be run multiple times by specifying it in the
      command-line multiple times, pass the --keep-duplicates
      argument
      (#1609);

    Thanks d6e,
    kvas-it,
    sallner,
    ioggstream and
    omarkohl for the PRs.

  • New CLI flag --override-ini/-o: overrides values from the ini
    file. For example: "-o xfail_strict=True"'. Thanks
    blueyed and
    fengxx for the PR.

  • New hooks:

    • pytest_fixture_setup(fixturedef, request): executes fixture
      setup;
    • pytest_fixture_post_finalizer(fixturedef): called after the
      fixture's finalizer and has access to the fixture's result
      cache.

    Thanks d6e,
    sallner.

  • Issue warnings for asserts whose test is a tuple literal. Such
    asserts will never fail because tuples are always truthy and are
    usually a mistake (see
    #1562). Thanks
    kvas-it, for the PR.

  • Allow passing a custom debugger class (e.g.
    --pdbcls=IPython.core.debugger:Pdb). Thanks to
    anntzer for the PR.

Changes

  • Plugins now benefit from assertion rewriting. Thanks
    sober7,
    nicoddemus and
    flub for the PR.
  • Change report.outcome for xpassed tests to "passed" in
    non-strict mode and "failed" in strict mode. Thanks to
    hackebrot for the PR
    (#1795) and
    gprasad84 for report
    (#1546).
  • Tests marked with xfail(strict=False) (the default) now appear in
    JUnitXML reports as passing tests instead of skipped. Thanks to
    hackebrot for the PR
    (#1795).
  • Highlight path of the file location in the error report to make it
    easier to copy/paste. Thanks suzaku
    for the PR
    (#1778).
  • Fixtures marked with @pytest.fixture can now use yield
    statements exactly like those marked with the
    @pytest.yield_fixture decorator. This change renders
    @pytest.yield_fixture deprecated and makes @pytest.fixture with
    yield statements the preferred way to write teardown code
    (#1461). Thanks
    csaftoiu for bringing this to
    attention and nicoddemus for the
    PR.
  • Explicitly passed parametrize ids do not get escaped to ascii
    (#1351). Thanks
    ceridwen for the PR.
  • Fixtures are now sorted in the error message displayed when an
    unknown fixture is declared in a test function. Thanks
    nicoddemus for the PR.
  • pytest_terminal_summary hook now receives the exitstatus of the
    test session as argument. Thanks
    blueyed for the PR
    (#1809).
  • Parametrize ids can accept None as specific test id, in which case
    the automatically generated id for that argument will be used.
    Thanks palaviv for the complete PR
    (#1468).
  • The parameter to xunit-style setup/teardown methods (setup_method,
    setup_module, etc.) is now optional and may be omitted. Thanks
    okken for bringing this to attention
    and nicoddemus for the PR.
  • Improved automatic id generation selection in case of duplicate ids
    in parametrize. Thanks palaviv for
    the complete PR
    (#1474).
  • Now pytest warnings summary is shown up by default. Added a new flag
    --disable-pytest-warnings to explicitly disable the warnings
    summary
    (#1668).
  • Make ImportError during collection more explicit by reminding the
    user to check the name of the test module/package(s)
    (#1426). Thanks
    omarkohl for the complete PR
    (#1520).
  • Add build/ and dist/ to the default --norecursedirs list.
    Thanks mikofski for the report and
    tomviner for the PR
    (#1544).
  • pytest.raises in the context manager form accepts a custom
    message to raise when no exception occurred. Thanks
    palaviv for the complete PR
    (#1616).
  • conftest.py files now benefit from assertion rewriting; previously
    it was only available for test modules. Thanks
    flub,
    sober7 and
    nicoddemus for the PR
    (#1619).
  • Text documents without any doctests no longer appear as "skipped".
    Thanks graingert for reporting and
    providing a full PR
    (#1580).
  • Ensure that a module within a namespace package can be found when it
    is specified on the command line together with the --pyargs
    option. Thanks to taschini for the
    PR (#1597).
  • Always include full assertion explanation during assertion
    rewriting. The previous behaviour was hiding sub-expressions that
    happened to be False, assuming this was redundant information.
    Thanks bagerard for reporting
    (#1503). Thanks
    to davehunt and
    tomviner for the PR.
  • OptionGroup.addoption() now checks if option names were already
    added before, to make it easier to track down issues like
    #1618. Before,
    you only got exceptions later from argparse library, giving no
    clue about the actual reason for double-added options.
  • yield-based tests are considered deprecated and will be removed in
    pytest-4.0. Thanks nicoddemus for
    the PR.
  • [pytest] sections in setup.cfg files should now be named
    [tool:pytest] to avoid conflicts with other distutils commands
    (see #567).
    [pytest] sections in pytest.ini or tox.ini files are supported
    and unchanged. Thanks nicoddemus
    for the PR.
  • Using pytest_funcarg__ prefix to declare fixtures is considered
    deprecated and will be removed in pytest-4.0
    (#1684). Thanks
    nicoddemus for the PR.
  • Passing a command-line string to pytest.main() is considered
    deprecated and scheduled for removal in pytest-4.0. It is
    recommended to pass a list of arguments instead
    (#1723).
  • Rename getfuncargvalue to getfixturevalue. getfuncargvalue is
    still present but is now considered deprecated. Thanks to
    RedBeardCode and
    tomviner for the PR
    (#1626).
  • optparse type usage now triggers DeprecationWarnings
    (#1740).
  • optparse backward compatibility supports float/complex types
    (#457).
  • Refined logic for determining the rootdir, considering only valid
    paths which fixes a number of issues:
    #1594,
    #1435 and
    #1471. Updated
    the documentation according to current behavior. Thanks to
    blueyed,
    davehunt and
    matthiasha for the PR.
  • Always include full assertion explanation. The previous behaviour
    was hiding sub-expressions that happened to be False, assuming this
    was redundant information. Thanks
    bagerard for reporting
    (#1503). Thanks
    to davehunt and
    tomviner for PR.
  • Better message in case of not using parametrized variable (see
    #1539). Thanks
    to tramwaj29 for the PR.
  • Updated docstrings with a more uniform style.
  • Add stderr write for pytest.exit(msg) during startup. Previously
    the message was never shown. Thanks
    BeyondEvil for reporting
    #1210. Thanks
    to JonathonSonesen and
    tomviner for the PR.
  • No longer display the incorrect test deselection reason
    (#1372). Thanks
    ronnypfannschmidt for the
    PR.
  • The --resultlog command line option has been deprecated: it is
    little used and there are more modern and better alternatives (see
    #830). Thanks
    nicoddemus for the PR.
  • Improve error message with fixture lookup errors: add an 'E' to the
    first line and '>' to the rest. Fixes
    #717. Thanks
    blueyed for reporting and a PR,
    eolo999 for the initial PR and
    tomviner for his guidance during
    EuroPython2016 sprint.

Bug Fixes

  • Parametrize now correctly handles duplicated test ids.
  • Fix internal error issue when the method argument is missing for
    teardown_method()
    (#1605).
  • Fix exception visualization in case the current working directory
    (CWD) gets deleted during testing
    (#1235). Thanks
    bukzor for reporting. PR by
    marscher.
  • Improve test output for logical expression with brackets
    (#925). Thanks
    DRMacIver for reporting and
    RedBeardCode for the PR.
  • Create correct diff for strings ending with newlines
    (#1553). Thanks
    Vogtinator for reporting and
    RedBeardCode and
    tomviner for the PR.
  • ConftestImportFailure now shows the traceback making it easier to
    identify bugs in conftest.py files
    (#1516). Thanks
    txomon for the PR.
  • Text documents without any doctests no longer appear as "skipped".
    Thanks graingert for reporting and
    providing a full PR
    (#1580).
  • Fixed collection of classes with custom __new__ method. Fixes
    #1579. Thanks
    to Stranger6667 for the PR.
  • Fixed scope overriding inside metafunc.parametrize
    (#634). Thanks
    to Stranger6667 for the PR.
  • Fixed the total tests tally in junit xml output
    (#1798). Thanks
    to cryporchild for the PR.
  • Fixed off-by-one error with lines from request.node.warn. Thanks
    to blueyed for the PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants