1pytest-2.3: improved fixtures / better unittest integration
2=============================================================================
3
4pytest-2.3 comes with many major improvements for fixture/funcarg management
5and parametrized testing in Python.  It is now easier, more efficient and
6more predicatable to re-run the same tests with different fixture
7instances.  Also, you can directly declare the caching "scope" of
8fixtures so that dependent tests throughout your whole test suite can
9re-use database or other expensive fixture objects with ease.  Lastly,
10it's possible for fixture functions (formerly known as funcarg
11factories) to use other fixtures, allowing for a completely modular and
12re-useable fixture design.
13
14For detailed info and tutorial-style examples, see:
15
16    http://pytest.org/latest/fixture.html
17
18Moreover, there is now support for using pytest fixtures/funcargs with
19unittest-style suites, see here for examples:
20
21    http://pytest.org/latest/unittest.html
22
23Besides, more unittest-test suites are now expected to "simply work"
24with pytest.
25
26All changes are backward compatible and you should be able to continue
27to run your test suites and 3rd party plugins that worked with
28pytest-2.2.4.
29
30If you are interested in the precise reasoning (including examples) of the
31pytest-2.3 fixture evolution, please consult
32http://pytest.org/latest/funcarg_compare.html
33
34For general info on installation and getting started:
35
36    http://pytest.org/latest/getting-started.html
37
38Docs and PDF access as usual at:
39
40    http://pytest.org
41
42and more details for those already in the knowing of pytest can be found
43in the CHANGELOG below.
44
45Particular thanks for this release go to Floris Bruynooghe, Alex Okrushko
46Carl Meyer, Ronny Pfannschmidt, Benjamin Peterson and Alex Gaynor for helping
47to get the new features right and well integrated.  Ronny and Floris
48also helped to fix a number of bugs and yet more people helped by
49providing bug reports.
50
51have fun,
52holger krekel
53
54
55Changes between 2.2.4 and 2.3.0
56-----------------------------------
57
58- fix issue202 - better automatic names for parametrized test functions
59- fix issue139 - introduce @pytest.fixture which allows direct scoping
60  and parametrization of funcarg factories.  Introduce new @pytest.setup
61  marker to allow the writing of setup functions which accept funcargs.
62- fix issue198 - conftest fixtures were not found on windows32 in some
63  circumstances with nested directory structures due to path manipulation issues
64- fix issue193 skip test functions with were parametrized with empty
65  parameter sets
66- fix python3.3 compat, mostly reporting bits that previously depended
67  on dict ordering
68- introduce re-ordering of tests by resource and parametrization setup
69  which takes precedence to the usual file-ordering
70- fix issue185 monkeypatching time.time does not cause pytest to fail
71- fix issue172 duplicate call of pytest.setup-decoratored setup_module
72  functions
73- fix junitxml=path construction so that if tests change the
74  current working directory and the path is a relative path
75  it is constructed correctly from the original current working dir.
76- fix "python setup.py test" example to cause a proper "errno" return
77- fix issue165 - fix broken doc links and mention stackoverflow for FAQ
78- catch unicode-issues when writing failure representations
79  to terminal to prevent the whole session from crashing
80- fix xfail/skip confusion: a skip-mark or an imperative pytest.skip
81  will now take precedence before xfail-markers because we
82  can't determine xfail/xpass status in case of a skip. see also:
83  http://stackoverflow.com/questions/11105828/in-py-test-when-i-explicitly-skip-a-test-that-is-marked-as-xfail-how-can-i-get
84
85- always report installed 3rd party plugins in the header of a test run
86
87- fix issue160: a failing setup of an xfail-marked tests should
88  be reported as xfail (not xpass)
89
90- fix issue128: show captured output when capsys/capfd are used
91
92- fix issue179: propperly show the dependency chain of factories
93
94- pluginmanager.register(...) now raises ValueError if the
95  plugin has been already registered or the name is taken
96
97- fix issue159: improve http://pytest.org/latest/faq.html
98  especially with respect to the "magic" history, also mention
99  pytest-django, trial and unittest integration.
100
101- make request.keywords and node.keywords writable.  All descendant
102  collection nodes will see keyword values.  Keywords are dictionaries
103  containing markers and other info.
104
105- fix issue 178: xml binary escapes are now wrapped in py.xml.raw
106
107- fix issue 176: correctly catch the builtin AssertionError
108  even when we replaced AssertionError with a subclass on the
109  python level
110
111- factory discovery no longer fails with magic global callables
112  that provide no sane __code__ object (mock.call for example)
113
114- fix issue 182: testdir.inprocess_run now considers passed plugins
115
116- fix issue 188: ensure sys.exc_info is clear on python2
117                 before calling into a test
118
119- fix issue 191: add unittest TestCase runTest method support
120- fix issue 156: monkeypatch correctly handles class level descriptors
121
122- reporting refinements:
123
124  - pytest_report_header now receives a "startdir" so that
125    you can use startdir.bestrelpath(yourpath) to show
126    nice relative path
127
128  - allow plugins to implement both pytest_report_header and
129    pytest_sessionstart (sessionstart is invoked first).
130
131  - don't show deselected reason line if there is none
132
133  - py.test -vv will show all of assert comparisations instead of truncating
134
135