135 lines
5.4 KiB
ReStructuredText
135 lines
5.4 KiB
ReStructuredText
|
pytest-2.3: improved fixtures / better unittest integration
|
||
|
=============================================================================
|
||
|
|
||
|
pytest-2.3 comes with many major improvements for fixture/funcarg management
|
||
|
and parametrized testing in Python. It is now easier, more efficient and
|
||
|
more predicatable to re-run the same tests with different fixture
|
||
|
instances. Also, you can directly declare the caching "scope" of
|
||
|
fixtures so that dependent tests throughout your whole test suite can
|
||
|
re-use database or other expensive fixture objects with ease. Lastly,
|
||
|
it's possible for fixture functions (formerly known as funcarg
|
||
|
factories) to use other fixtures, allowing for a completely modular and
|
||
|
re-useable fixture design.
|
||
|
|
||
|
For detailed info and tutorial-style examples, see:
|
||
|
|
||
|
http://pytest.org/latest/fixture.html
|
||
|
|
||
|
Moreover, there is now support for using pytest fixtures/funcargs with
|
||
|
unittest-style suites, see here for examples:
|
||
|
|
||
|
http://pytest.org/latest/unittest.html
|
||
|
|
||
|
Besides, more unittest-test suites are now expected to "simply work"
|
||
|
with pytest.
|
||
|
|
||
|
All changes are backward compatible and you should be able to continue
|
||
|
to run your test suites and 3rd party plugins that worked with
|
||
|
pytest-2.2.4.
|
||
|
|
||
|
If you are interested in the precise reasoning (including examples) of the
|
||
|
pytest-2.3 fixture evolution, please consult
|
||
|
http://pytest.org/latest/funcarg_compare.html
|
||
|
|
||
|
For general info on installation and getting started:
|
||
|
|
||
|
http://pytest.org/latest/getting-started.html
|
||
|
|
||
|
Docs and PDF access as usual at:
|
||
|
|
||
|
http://pytest.org
|
||
|
|
||
|
and more details for those already in the knowing of pytest can be found
|
||
|
in the CHANGELOG below.
|
||
|
|
||
|
Particular thanks for this release go to Floris Bruynooghe, Alex Okrushko
|
||
|
Carl Meyer, Ronny Pfannschmidt, Benjamin Peterson and Alex Gaynor for helping
|
||
|
to get the new features right and well integrated. Ronny and Floris
|
||
|
also helped to fix a number of bugs and yet more people helped by
|
||
|
providing bug reports.
|
||
|
|
||
|
have fun,
|
||
|
holger krekel
|
||
|
|
||
|
|
||
|
Changes between 2.2.4 and 2.3.0
|
||
|
-----------------------------------
|
||
|
|
||
|
- fix issue202 - better automatic names for parametrized test functions
|
||
|
- fix issue139 - introduce @pytest.fixture which allows direct scoping
|
||
|
and parametrization of funcarg factories. Introduce new @pytest.setup
|
||
|
marker to allow the writing of setup functions which accept funcargs.
|
||
|
- fix issue198 - conftest fixtures were not found on windows32 in some
|
||
|
circumstances with nested directory structures due to path manipulation issues
|
||
|
- fix issue193 skip test functions with were parametrized with empty
|
||
|
parameter sets
|
||
|
- fix python3.3 compat, mostly reporting bits that previously depended
|
||
|
on dict ordering
|
||
|
- introduce re-ordering of tests by resource and parametrization setup
|
||
|
which takes precedence to the usual file-ordering
|
||
|
- fix issue185 monkeypatching time.time does not cause pytest to fail
|
||
|
- fix issue172 duplicate call of pytest.setup-decoratored setup_module
|
||
|
functions
|
||
|
- fix junitxml=path construction so that if tests change the
|
||
|
current working directory and the path is a relative path
|
||
|
it is constructed correctly from the original current working dir.
|
||
|
- fix "python setup.py test" example to cause a proper "errno" return
|
||
|
- fix issue165 - fix broken doc links and mention stackoverflow for FAQ
|
||
|
- catch unicode-issues when writing failure representations
|
||
|
to terminal to prevent the whole session from crashing
|
||
|
- fix xfail/skip confusion: a skip-mark or an imperative pytest.skip
|
||
|
will now take precedence before xfail-markers because we
|
||
|
can't determine xfail/xpass status in case of a skip. see also:
|
||
|
http://stackoverflow.com/questions/11105828/in-py-test-when-i-explicitly-skip-a-test-that-is-marked-as-xfail-how-can-i-get
|
||
|
|
||
|
- always report installed 3rd party plugins in the header of a test run
|
||
|
|
||
|
- fix issue160: a failing setup of an xfail-marked tests should
|
||
|
be reported as xfail (not xpass)
|
||
|
|
||
|
- fix issue128: show captured output when capsys/capfd are used
|
||
|
|
||
|
- fix issue179: propperly show the dependency chain of factories
|
||
|
|
||
|
- pluginmanager.register(...) now raises ValueError if the
|
||
|
plugin has been already registered or the name is taken
|
||
|
|
||
|
- fix issue159: improve http://pytest.org/latest/faq.html
|
||
|
especially with respect to the "magic" history, also mention
|
||
|
pytest-django, trial and unittest integration.
|
||
|
|
||
|
- make request.keywords and node.keywords writable. All descendant
|
||
|
collection nodes will see keyword values. Keywords are dictionaries
|
||
|
containing markers and other info.
|
||
|
|
||
|
- fix issue 178: xml binary escapes are now wrapped in py.xml.raw
|
||
|
|
||
|
- fix issue 176: correctly catch the builtin AssertionError
|
||
|
even when we replaced AssertionError with a subclass on the
|
||
|
python level
|
||
|
|
||
|
- factory discovery no longer fails with magic global callables
|
||
|
that provide no sane __code__ object (mock.call for example)
|
||
|
|
||
|
- fix issue 182: testdir.inprocess_run now considers passed plugins
|
||
|
|
||
|
- fix issue 188: ensure sys.exc_info is clear on python2
|
||
|
before calling into a test
|
||
|
|
||
|
- fix issue 191: add unittest TestCase runTest method support
|
||
|
- fix issue 156: monkeypatch correctly handles class level descriptors
|
||
|
|
||
|
- reporting refinements:
|
||
|
|
||
|
- pytest_report_header now receives a "startdir" so that
|
||
|
you can use startdir.bestrelpath(yourpath) to show
|
||
|
nice relative path
|
||
|
|
||
|
- allow plugins to implement both pytest_report_header and
|
||
|
pytest_sessionstart (sessionstart is invoked first).
|
||
|
|
||
|
- don't show deselected reason line if there is none
|
||
|
|
||
|
- py.test -vv will show all of assert comparisations instead of truncating
|
||
|
|