| 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 |
| |