| py.test 2.2.0: test marking++, parametrization++ and duration profiling |
| =========================================================================== |
| |
| pytest-2.2.0 is a test-suite compatible release of the popular |
| py.test testing tool. Plugins might need upgrades. It comes |
| with these improvements: |
| |
| * easier and more powerful parametrization of tests: |
| |
| - new @pytest.mark.parametrize decorator to run tests with different arguments |
| - new metafunc.parametrize() API for parametrizing arguments independently |
| - see examples at http://pytest.org/latest/example/parametrize.html |
| - NOTE that parametrize() related APIs are still a bit experimental |
| and might change in future releases. |
| |
| * improved handling of test markers and refined marking mechanism: |
| |
| - "-m markexpr" option for selecting tests according to their mark |
| - a new "markers" ini-variable for registering test markers for your project |
| - the new "--strict" bails out with an error if using unregistered markers. |
| - see examples at http://pytest.org/latest/example/markers.html |
| |
| * duration profiling: new "--duration=N" option showing the N slowest test |
| execution or setup/teardown calls. This is most useful if you want to |
| find out where your slowest test code is. |
| |
| * also 2.2.0 performs more eager calling of teardown/finalizers functions |
| resulting in better and more accurate reporting when they fail |
| |
| Besides there is the usual set of bug fixes along with a cleanup of |
| pytest's own test suite allowing it to run on a wider range of environments. |
| |
| For general information, see extensive docs with examples here: |
| |
| http://pytest.org/ |
| |
| If you want to install or upgrade pytest you might just type:: |
| |
| pip install -U pytest # or |
| easy_install -U pytest |
| |
| Thanks to Ronny Pfannschmidt, David Burns, Jeff Donner, Daniel Nouri, Alfredo Deza and all who gave feedback or sent bug reports. |
| |
| best, |
| holger krekel |
| |
| |
| notes on incompatibility |
| ------------------------------ |
| |
| While test suites should work unchanged you might need to upgrade plugins: |
| |
| * You need a new version of the pytest-xdist plugin (1.7) for distributing |
| test runs. |
| |
| * Other plugins might need an upgrade if they implement |
| the ``pytest_runtest_logreport`` hook which now is called unconditionally |
| for the setup/teardown fixture phases of a test. You may choose to |
| ignore setup/teardown failures by inserting "if rep.when != 'call': return" |
| or something similar. Note that most code probably "just" works because |
| the hook was already called for failing setup/teardown phases of a test |
| so a plugin should have been ready to grok such reports already. |
| |
| |
| Changes between 2.1.3 and 2.2.0 |
| ---------------------------------------- |
| |
| - fix issue90: introduce eager tearing down of test items so that |
| teardown function are called earlier. |
| - add an all-powerful metafunc.parametrize function which allows to |
| parametrize test function arguments in multiple steps and therefore |
| from independent plugins and places. |
| - add a @pytest.mark.parametrize helper which allows to easily |
| call a test function with different argument values. |
| - Add examples to the "parametrize" example page, including a quick port |
| of Test scenarios and the new parametrize function and decorator. |
| - introduce registration for "pytest.mark.*" helpers via ini-files |
| or through plugin hooks. Also introduce a "--strict" option which |
| will treat unregistered markers as errors |
| allowing to avoid typos and maintain a well described set of markers |
| for your test suite. See examples at http://pytest.org/latest/mark.html |
| and its links. |
| - issue50: introduce "-m marker" option to select tests based on markers |
| (this is a stricter and more predictable version of "-k" in that "-m" |
| only matches complete markers and has more obvious rules for and/or |
| semantics. |
| - new feature to help optimizing the speed of your tests: |
| --durations=N option for displaying N slowest test calls |
| and setup/teardown methods. |
| - fix issue87: --pastebin now works with python3 |
| - fix issue89: --pdb with unexpected exceptions in doctest work more sensibly |
| - fix and cleanup pytest's own test suite to not leak FDs |
| - fix issue83: link to generated funcarg list |
| - fix issue74: pyarg module names are now checked against imp.find_module false positives |
| - fix compatibility with twisted/trial-11.1.0 use cases |