[pytest-dev] please test pytest-2.4.0 release candidate

Vladimir Keleshev vladimir at keleshev.com
Tue Oct 1 12:51:30 CEST 2013


Hi Holger,

Maybe you are still working on the docs, but I just wanted to note that you probably want to remove this paragraph:

>  Some developers also expressed their preference for rather introduce a new @pytest.yieldfixture decorator instead of a keyword argument, or for assuming the above yield-semantics automatically by introspecting if a fixture function is a generator. Depending on more experiences and feedback during the 2.4 cycle, we revisit theses issues.

See: http://pytest.org/latest/yieldfixture.html

Also, forbidding yield in return-style fixtures was a good decision, I think.

—Vladimir


30.09.2013, 16:06, "holger krekel" <holger at merlinux.eu>:

>  Hi everybody,
>
>  could you help to verify that pytest-2.4 will continue to work for your
>  test suite and/or plugins?  Please report back any issues here or on
>  #pylib freenode.  Release is scheduled tomorrow (tuesday) noon (GMT) so
>  please hurry :)
>
>  The repo is now pretty much in shape for a release and
>  you can install a packaged version like this::
>
>      pip install -i http://devpi.net/hpk/dev/+simple/ -U pytest
>
>  this should give you pytest-2.4.dev13 (see "--version" option).
>
>  Below is the long changelog in case you are curious.
>
>  Latest two changes:
>
>  - the decorator yield_fixture is now there.  See
>    http://pytest.org/dev/yieldfixture.html
>
>  - i did a refactoring of how pytest startup is performed, fixing
>    issue358 and allowing pytest-django and other plugins to
>    perform actions before the first conftest file is loaded.
>    Andreas Pelme already adapted pytest-django to utilize
>    the improvements (mainly you can then use ``--ds=...`` setting
>    and have your conftest.py files import django) and it seems to fix
>    issue359.
>
>  Apart from some known incompatibilities (see changelog below)
>  pytest-2.4 aims to be a drop-in replacement for 2.3.5.
>
>  cheers,
>  holger
>
>  Changes between 2.3.5 and 2.4.DEV
>  -----------------------------------
>
>  known incompatibilities:
>
>  - if calling --genscript from python2.7 or above, you only get a
>    standalone script which works on python2.7 or above.  Use Python2.6
>    to also get a python2.5 compatible version.
>
>  - all xunit-style teardown methods (nose-style, pytest-style,
>    unittest-style) will not be called if the corresponding setup method failed,
>    see issue322 below.
>
>  - the pytest_plugin_unregister hook wasn't ever properly called
>    and there is no known implementation of the hook - so it got removed.
>
>  - pytest.fixture-decorated functions cannot be generators (i.e. use
>    yield) anymore.  This change might be reversed in 2.4.1 if it causes
>    unforeseen real-life issues.  However, you can always write and return
>    an inner function/generator and change the fixture consumer to iterate
>    over the returned generator.  This change was done in lieu of the new
>    ``pytest.yield_fixture`` decorator, see below.
>
>  new features:
>
>  - experimentally introduce a new ``pytest.yield_fixture`` decorator
>    which accepts exactly the same parameters as pytest.fixture but
>    mandates a ``yield`` statement instead of a ``return statement`` from
>    fixture functions.  This allows direct integration with "with-style"
>    context managers in fixture functions and generally avoids registering
>    of finalization callbacks in favour of treating the "after-yield" as
>    teardown code.  Thanks Andreas Pelme, Vladimir Keleshev, Floris
>    Bruynooghe, Ronny Pfannschmidt and many others for discussions.
>
>  - allow boolean expression directly with skipif/xfail
>    if a "reason" is also specified.  Rework skipping documentation
>    to recommend "condition as booleans" because it prevents surprises
>    when importing markers between modules.  Specifying conditions
>    as strings will remain fully supported.
>
>  - reporting: color the last line red or green depending if
>    failures/errors occured or everything passed.  thanks Christian
>    Theunert.
>
>  - make "import pdb ; pdb.set_trace()" work natively wrt capturing (no
>    "-s" needed anymore), making ``pytest.set_trace()`` a mere shortcut.
>
>  - fix issue181: --pdb now also works on collect errors (and
>    on internal errors) .  This was implemented by a slight internal
>    refactoring and the introduction of a new hook
>    ``pytest_exception_interact`` hook (see next item).
>
>  - fix issue341: introduce new experimental hook for IDEs/terminals to
>    intercept debugging: ``pytest_exception_interact(node, call, report)``.
>
>  - new monkeypatch.setattr() variant to provide a shorter
>    invocation for patching out classes/functions from modules:
>
>       monkeypatch.setattr("requests.get", myfunc)
>
>    will replace the "get" function of the "requests" module with ``myfunc``.
>
>  - fix issue322: tearDownClass is not run if setUpClass failed. Thanks
>    Mathieu Agopian for the initial fix.  Also make all of pytest/nose
>    finalizer mimick the same generic behaviour: if a setupX exists and
>    fails, don't run teardownX.  This internally introduces a new method
>    "node.addfinalizer()" helper which can only be called during the setup
>    phase of a node.
>
>  - simplify pytest.mark.parametrize() signature: allow to pass a
>    CSV-separated string to specify argnames.  For example:
>    ``pytest.mark.parametrize("input,expected",  [(1,2), (2,3)])``
>    works as well as the previous:
>    ``pytest.mark.parametrize(("input", "expected"), ...)``.
>
>  - add support for setUpModule/tearDownModule detection, thanks Brian Okken.
>
>  - integrate tab-completion on options through use of "argcomplete".
>    Thanks Anthon van der Neut for the PR.
>
>  - change option names to be hyphen-separated long options but keep the
>    old spelling backward compatible.  py.test -h will only show the
>    hyphenated version, for example "--collect-only" but "--collectonly"
>    will remain valid as well (for backward-compat reasons).  Many thanks to
>    Anthon van der Neut for the implementation and to Hynek Schlawack for
>    pushing us.
>
>  - fix issue 308 - allow to mark/xfail/skip individual parameter sets
>    when parametrizing.  Thanks Brianna Laugher.
>
>  - call new experimental pytest_load_initial_conftests hook to allow
>    3rd party plugins to do something before a conftest is loaded.
>
>  Bug fixes:
>
>  - fix issue358 - capturing options are now parsed more properly
>    by using a new parser.parse_known_args method.
>
>  - pytest now uses argparse instead of optparse (thanks Anthon) which
>    means that "argparse" is added as a dependency if installing into python2.6
>    environments or below.
>
>  - fix issue333: fix a case of bad unittest/pytest hook interaction.
>
>  - PR27: correctly handle nose.SkipTest during collection.  Thanks
>    Antonio Cuni, Ronny Pfannschmidt.
>
>  - fix issue355: junitxml puts name="pytest" attribute to testsuite tag.
>
>  - fix issue336: autouse fixture in plugins should work again.
>
>  - fix issue279: improve object comparisons on assertion failure
>    for standard datatypes and recognise collections.abc.  Thanks to
>    Brianna Laugher and Mathieu Agopian.
>
>  - fix issue317: assertion rewriter support for the is_package method
>
>  - fix issue335: document py.code.ExceptionInfo() object returned
>    from pytest.raises(), thanks Mathieu Agopian.
>
>  - remove implicit distribute_setup support from setup.py.
>
>  - fix issue305: ignore any problems when writing pyc files.
>
>  - SO-17664702: call fixture finalizers even if the fixture function
>    partially failed (finalizers would not always be called before)
>
>  - fix issue320 - fix class scope for fixtures when mixed with
>    module-level functions.  Thanks Anatloy Bubenkoff.
>
>  - you can specify "-q" or "-qq" to get different levels of "quieter"
>    reporting (thanks Katarzyna Jachim)
>
>  - fix issue300 - Fix order of conftest loading when starting py.test
>    in a subdirectory.
>
>  - fix issue323 - sorting of many module-scoped arg parametrizations
>
>  - make sessionfinish hooks execute with the same cwd-context as at
>    session start (helps fix plugin behaviour which write output files
>    with relative path such as pytest-cov)
>
>  - fix issue316 - properly reference collection hooks in docs
>
>  - fix issue 306 - cleanup of -k/-m options to only match markers/test
>    names/keywords respectively.  Thanks Wouter van Ackooy.
>
>  - improved doctest counting for doctests in python modules --
>    files without any doctest items will not show up anymore
>    and doctest examples are counted as separate test items.
>    thanks Danilo Bellini.
>
>  - fix issue245 by depending on the released py-1.4.14
>    which fixes py.io.dupfile to work with files with no
>    mode. Thanks Jason R. Coombs.
>
>  - fix junitxml generation when test output contains control characters,
>    addressing issue267, thanks Jaap Broekhuizen
>
>  - fix issue338: honor --tb style for setup/teardown errors as well.  Thanks Maho.
>
>  - fix issue307 - use yaml.safe_load in example, thanks Mark Eichin.
>
>  - better parametrize error messages, thanks Brianna Laugher
>
>  - pytest_terminal_summary(terminalreporter) hooks can now use
>    ".section(title)" and ".line(msg)" methods to print extra
>    information at the end of a test run.
>  _______________________________________________
>  Pytest-dev mailing list
>  Pytest-dev at python.org
>  https://mail.python.org/mailman/listinfo/pytest-dev


More information about the Pytest-dev mailing list