[Pytest-commit] commit/pytest: 3 new changesets

commits-noreply at bitbucket.org commits-noreply at bitbucket.org
Thu Aug 7 23:05:17 CEST 2014


3 new commits in pytest:

https://bitbucket.org/hpk42/pytest/commits/a4f9639702ba/
Changeset:   a4f9639702ba
User:        hpk42
Date:        2014-08-07 21:41:51
Summary:     finalize pytest-2.6.1 release, regen docs
Affected #:  23 files

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,4 @@
-NEXT
+2.6.1
 -----------------------------------
 
 - No longer show line numbers in the --verbose output, the output is now

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 _pytest/__init__.py
--- a/_pytest/__init__.py
+++ b/_pytest/__init__.py
@@ -1,2 +1,2 @@
 #
-__version__ = '2.6.1.dev3'
+__version__ = '2.6.1'

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/announce/release-2.6.1.txt
--- /dev/null
+++ b/doc/en/announce/release-2.6.1.txt
@@ -0,0 +1,59 @@
+pytest-2.6.1: fixes and new xfail feature
+===========================================================================
+
+pytest is a mature Python testing tool with more than a 1100 tests
+against itself, passing on many different interpreters and platforms.
+The 2.6.1 release is drop-in compatible to 2.5.2 and actually fixes some
+regressions introduced with 2.6.0.  It also brings a little feature
+to the xfail marker which now recognizes expected exceptions,
+see the CHANGELOG below.
+
+See docs at:
+
+    http://pytest.org
+
+As usual, you can upgrade from pypi via::
+
+    pip install -U pytest
+
+Thanks to all who contributed, among them:
+
+    Floris Bruynooghe
+    Bruno Oliveira
+    Nicolas Delaby
+
+have fun,
+holger krekel
+
+Changes 2.6.1
+=================
+
+- No longer show line numbers in the --verbose output, the output is now
+  purely the nodeid.  The line number is still shown in failure reports.
+  Thanks Floris Bruynooghe.
+
+- fix issue437 where assertion rewriting could cause pytest-xdist slaves
+  to collect different tests. Thanks Bruno Oliveira.
+
+- fix issue555: add "errors" attribute to capture-streams to satisfy
+  some distutils and possibly other code accessing sys.stdout.errors.
+
+- fix issue547 capsys/capfd also work when output capturing ("-s") is disabled.
+
+- address issue170: allow pytest.mark.xfail(...) to specify expected exceptions via
+  an optional "raises=EXC" argument where EXC can be a single exception
+  or a tuple of exception classes.  Thanks David Mohr for the complete
+  PR.
+
+- fix integration of pytest with unittest.mock.patch decorator when
+  it uses the "new" argument.  Thanks Nicolas Delaby for test and PR.
+
+- fix issue with detecting conftest files if the arguments contain
+  "::" node id specifications (copy pasted from "-v" output)
+
+- fix issue544 by only removing "@NUM" at the end of "::" separated parts
+  and if the part has an ".py" extension
+
+- don't use py.std import helper, rather import things directly.
+  Thanks Bruno Oliveira.
+

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/assert.txt
--- a/doc/en/assert.txt
+++ b/doc/en/assert.txt
@@ -26,7 +26,7 @@
 
     $ py.test test_assert1.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_assert1.py F
@@ -132,7 +132,7 @@
 
     $ py.test test_assert2.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_assert2.py F

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/attic_fixtures.txt
--- a/doc/en/attic_fixtures.txt
+++ /dev/null
@@ -1,188 +0,0 @@
-
-**Test classes, modules or whole projects can make use of
-one or more fixtures**.  All required fixture functions will execute 
-before a test from the specifying context executes.  As You can use this
-to make tests operate from a pre-initialized directory or with
-certain environment variables or with pre-configured global application
-settings.
-
-For example, the Django_ project requires database 
-initialization to be able to import from and use its model objects.  
-For that, the `pytest-django`_ plugin provides fixtures which your 
-project can then easily depend or extend on, simply by referencing the
-name of the particular fixture. 
-
-Fixture functions have limited visilibity which depends on where they
-are defined.  If they are defined on a test class, only its test methods 
-may use it. A fixture defined in a module can only be used
-from that test module.  A fixture defined in a conftest.py file
-can only be used by the tests below the directory of that file.
-Lastly, plugins can define fixtures which are available across all
-projects.
-
-
-
-
-
-Python, Java and many other languages support a so called xUnit_ style 
-for providing a fixed state, `test fixtures`_, for running tests.  It
-typically involves calling a autouse function ahead and a teardown
-function after test execute.  In 2005 pytest introduced a scope-specific
-model of automatically detecting and calling autouse and teardown
-functions on a per-module, class or function basis.  The Python unittest
-package and nose have subsequently incorporated them.  This model
-remains supported by pytest as :ref:`classic xunit`.  
-
-One property of xunit fixture functions is that they work implicitely
-by preparing global state or setting attributes on TestCase objects.
-By contrast, pytest provides :ref:`funcargs` which allow to 
-dependency-inject application test state into test functions or 
-methods as function arguments.  If your application is sufficiently modular
-or if you are creating a new project, we recommend you now rather head over to
-:ref:`funcargs` instead because many pytest users agree that using this
-paradigm leads to better application and test organisation.
-
-However, not all programs and frameworks work and can be tested in
-a fully modular way.  They rather require preparation of global state
-like database autouse on which further fixtures like preparing application
-specific tables or wrapping tests in transactions can take place.  For those 
-needs, pytest-2.3 now supports new **fixture functions** which come with
-a ton of improvements over classic xunit fixture writing.  Fixture functions:
-
-- allow to separate different autouse concerns into multiple modular functions
-
-- can receive and fully interoperate with :ref:`funcargs <resources>`,
-
-- are called multiple times if its funcargs are parametrized,
-
-- don't need to be defined directly in your test classes or modules,
-  they can also be defined in a plugin or :ref:`conftest.py <conftest.py>` files and get called 
-
-- are called on a per-session, per-module, per-class or per-function basis
-  by means of a simple "scope" declaration.
-
-- can access the :ref:`request <request>` object which allows to
-  introspect and interact with the (scoped) testcontext.
-
-- can add cleanup functions which will be invoked when the last test
-  of the fixture test context has finished executing.
-
-All of these features are now demonstrated by little examples.
-
-
-
-
-
-test modules accessing a global resource
--------------------------------------------------------
-
-.. note::
-
-    Relying on `global state is considered bad programming practise <http://en.wikipedia.org/wiki/Global_variable>`_ but when you work with an application
-    that relies on it you often have no choice.
-
-If you want test modules to access a global resource,
-you can stick the resource to the module globals in
-a per-module autouse function.  We use a :ref:`resource factory
-<@pytest.fixture>` to create our global resource::
-
-    # content of conftest.py
-    import pytest
-
-    class GlobalResource:
-        def __init__(self):
-            pass
-
-    @pytest.fixture(scope="session")
-    def globresource():
-        return GlobalResource()
-
-    @pytest.fixture(scope="module")
-    def setresource(request, globresource):
-        request.module.globresource = globresource
-       
-Now any test module can access ``globresource`` as a module global::
-
-    # content of test_glob.py
-
-    def test_1():
-        print ("test_1 %s" % globresource)
-    def test_2():
-        print ("test_2 %s" % globresource)
-
-Let's run this module without output-capturing::
-
-    $ py.test -qs test_glob.py
-    FF
-    ================================= FAILURES =================================
-    __________________________________ test_1 __________________________________
-    
-        def test_1():
-    >       print ("test_1 %s" % globresource)
-    E       NameError: global name 'globresource' is not defined
-    
-    test_glob.py:3: NameError
-    __________________________________ test_2 __________________________________
-    
-        def test_2():
-    >       print ("test_2 %s" % globresource)
-    E       NameError: global name 'globresource' is not defined
-    
-    test_glob.py:5: NameError
-    2 failed in 0.01 seconds
-
-The two tests see the same global ``globresource`` object.
-
-Parametrizing the global resource
-+++++++++++++++++++++++++++++++++++++++++++++++++
-
-We extend the previous example and add parametrization to the globresource 
-factory and also add a finalizer::
-
-    # content of conftest.py
-
-    import pytest
-
-    class GlobalResource:
-        def __init__(self, param):
-            self.param = param
-
-    @pytest.fixture(scope="session", params=[1,2])
-    def globresource(request):
-        g = GlobalResource(request.param)
-        def fin():
-            print "finalizing", g
-        request.addfinalizer(fin)
-        return g
-
-    @pytest.fixture(scope="module")
-    def setresource(request, globresource):
-        request.module.globresource = globresource
-
-And then re-run our test module::
-
-    $ py.test -qs test_glob.py
-    FF
-    ================================= FAILURES =================================
-    __________________________________ test_1 __________________________________
-    
-        def test_1():
-    >       print ("test_1 %s" % globresource)
-    E       NameError: global name 'globresource' is not defined
-    
-    test_glob.py:3: NameError
-    __________________________________ test_2 __________________________________
-    
-        def test_2():
-    >       print ("test_2 %s" % globresource)
-    E       NameError: global name 'globresource' is not defined
-    
-    test_glob.py:5: NameError
-    2 failed in 0.01 seconds
-
-We are now running the two tests twice with two different global resource
-instances.  Note that the tests are ordered such that only
-one instance is active at any given time: the finalizer of 
-the first globresource instance is called before the second
-instance is created and sent to the autouse functions.
-

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/capture.txt
--- a/doc/en/capture.txt
+++ b/doc/en/capture.txt
@@ -64,7 +64,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_module.py .F
@@ -78,7 +78,7 @@
     
     test_module.py:9: AssertionError
     -------------------------- Captured stdout setup ---------------------------
-    setting up <function test_func2 at 0x2abe0d7241b8>
+    setting up <function test_func2 at 0x2b5d6a81c9d8>
     ==================== 1 failed, 1 passed in 0.01 seconds ====================
 
 Accessing captured output from a test function

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/doctest.txt
--- a/doc/en/doctest.txt
+++ b/doc/en/doctest.txt
@@ -44,12 +44,12 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     mymodule.py .
     
-    ========================= 1 passed in 0.04 seconds =========================
+    ========================= 1 passed in 0.06 seconds =========================
 
 It is possible to use fixtures using the ``getfixture`` helper::
 

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/markers.txt
--- a/doc/en/example/markers.txt
+++ b/doc/en/example/markers.txt
@@ -31,10 +31,10 @@
 
     $ py.test -v -m webtest
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 4 items
     
-    test_server.py at 3::test_send_http PASSED
+    test_server.py::test_send_http PASSED
     
     =================== 3 tests deselected by "-m 'webtest'" ===================
     ================== 1 passed, 3 deselected in 0.01 seconds ==================
@@ -43,12 +43,12 @@
 
     $ py.test -v -m "not webtest"
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 4 items
     
-    test_server.py at 6::test_something_quick PASSED
-    test_server.py at 8::test_another PASSED
-    test_server.py at 11::TestClass::test_method PASSED
+    test_server.py::test_something_quick PASSED
+    test_server.py::test_another PASSED
+    test_server.py::TestClass::test_method PASSED
     
     ================= 1 tests deselected by "-m 'not webtest'" =================
     ================== 3 passed, 1 deselected in 0.01 seconds ==================
@@ -62,10 +62,10 @@
 
     $ py.test -v test_server.py::TestClass::test_method
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 5 items
     
-    test_server.py at 11::TestClass::test_method PASSED
+    test_server.py::TestClass::test_method PASSED
     
     ========================= 1 passed in 0.01 seconds =========================
 
@@ -73,10 +73,10 @@
 
     $ py.test -v test_server.py::TestClass
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 4 items
     
-    test_server.py at 11::TestClass::test_method PASSED
+    test_server.py::TestClass::test_method PASSED
     
     ========================= 1 passed in 0.01 seconds =========================
 
@@ -84,11 +84,11 @@
 
   $ py.test -v test_server.py::TestClass test_server.py::test_send_http
   =========================== test session starts ============================
-  platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+  platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
   collecting ... collected 8 items
   
-  test_server.py at 11::TestClass::test_method PASSED
-  test_server.py at 3::test_send_http PASSED
+  test_server.py::TestClass::test_method PASSED
+  test_server.py::test_send_http PASSED
   
   ========================= 2 passed in 0.01 seconds =========================
 
@@ -120,10 +120,10 @@
 
     $ py.test -v -k http  # running with the above defined example module
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 4 items
     
-    test_server.py at 3::test_send_http PASSED
+    test_server.py::test_send_http PASSED
     
     ====================== 3 tests deselected by '-khttp' ======================
     ================== 1 passed, 3 deselected in 0.01 seconds ==================
@@ -132,12 +132,12 @@
 
     $ py.test -k "not send_http" -v
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 4 items
     
-    test_server.py at 6::test_something_quick PASSED
-    test_server.py at 8::test_another PASSED
-    test_server.py at 11::TestClass::test_method PASSED
+    test_server.py::test_something_quick PASSED
+    test_server.py::test_another PASSED
+    test_server.py::TestClass::test_method PASSED
     
     ================= 1 tests deselected by '-knot send_http' ==================
     ================== 3 passed, 1 deselected in 0.01 seconds ==================
@@ -146,11 +146,11 @@
 
     $ py.test -k "http or quick" -v
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 4 items
     
-    test_server.py at 3::test_send_http PASSED
-    test_server.py at 6::test_something_quick PASSED
+    test_server.py::test_send_http PASSED
+    test_server.py::test_something_quick PASSED
     
     ================= 2 tests deselected by '-khttp or quick' ==================
     ================== 2 passed, 2 deselected in 0.01 seconds ==================
@@ -187,7 +187,7 @@
     
     @pytest.mark.skipif(condition): skip the given test function if eval(condition) results in a True value.  Evaluation happens within the module global context. Example: skipif('sys.platform == "win32"') skips the test if we are on the win32 platform. see http://pytest.org/latest/skipping.html
     
-    @pytest.mark.xfail(condition, reason=None, run=True): mark the the test function as an expected failure if eval(condition) has a True value. Optionally specify a reason for better reporting and run=False if you don't even want to execute the test function. See http://pytest.org/latest/skipping.html
+    @pytest.mark.xfail(condition, reason=None, run=True, raises=None): mark the the test function as an expected failure if eval(condition) has a True value. Optionally specify a reason for better reporting and run=False if you don't even want to execute the test function. If only specific exception(s) are expected, you can list them in raises, and if the test fails in other ways, it will be reported as a true failure. See http://pytest.org/latest/skipping.html
     
     @pytest.mark.parametrize(argnames, argvalues): call a test function multiple times passing in different arguments in turn. argvalues generally needs to be a list of values if argnames specifies only one name or a list of tuples of values if argnames specifies multiple names. Example: @parametrize('arg1', [1,2]) would lead to two calls of the decorated test function, one with arg1=1 and another with arg1=2.see http://pytest.org/latest/parametrize.html for more info and examples.
     
@@ -326,7 +326,7 @@
 
     $ py.test -E stage2
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_someenv.py s
@@ -337,7 +337,7 @@
 
     $ py.test -E stage1
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_someenv.py .
@@ -351,7 +351,7 @@
     
     @pytest.mark.skipif(condition): skip the given test function if eval(condition) results in a True value.  Evaluation happens within the module global context. Example: skipif('sys.platform == "win32"') skips the test if we are on the win32 platform. see http://pytest.org/latest/skipping.html
     
-    @pytest.mark.xfail(condition, reason=None, run=True): mark the the test function as an expected failure if eval(condition) has a True value. Optionally specify a reason for better reporting and run=False if you don't even want to execute the test function. See http://pytest.org/latest/skipping.html
+    @pytest.mark.xfail(condition, reason=None, run=True, raises=None): mark the the test function as an expected failure if eval(condition) has a True value. Optionally specify a reason for better reporting and run=False if you don't even want to execute the test function. If only specific exception(s) are expected, you can list them in raises, and if the test fails in other ways, it will be reported as a true failure. See http://pytest.org/latest/skipping.html
     
     @pytest.mark.parametrize(argnames, argvalues): call a test function multiple times passing in different arguments in turn. argvalues generally needs to be a list of values if argnames specifies only one name or a list of tuples of values if argnames specifies multiple names. Example: @parametrize('arg1', [1,2]) would lead to two calls of the decorated test function, one with arg1=1 and another with arg1=2.see http://pytest.org/latest/parametrize.html for more info and examples.
     
@@ -455,26 +455,26 @@
 
     $ py.test -rs # this option reports skip reasons
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 4 items
     
-    test_plat.py s.s.
+    test_plat.py sss.
     ========================= short test summary info ==========================
-    SKIP [2] /tmp/doc-exec-142/conftest.py:12: cannot run on platform linux2
+    SKIP [3] /tmp/doc-exec-238/conftest.py:12: cannot run on platform linux
     
-    =================== 2 passed, 2 skipped in 0.01 seconds ====================
+    =================== 1 passed, 3 skipped in 0.01 seconds ====================
 
 Note that if you specify a platform via the marker-command line option like this::
 
     $ py.test -m linux2
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 4 items
     
-    test_plat.py .
+    test_plat.py s
     
     =================== 3 tests deselected by "-m 'linux2'" ====================
-    ================== 1 passed, 3 deselected in 0.01 seconds ==================
+    ================= 1 skipped, 3 deselected in 0.01 seconds ==================
 
 then the unmarked-tests will not be run.  It is thus a way to restrict the run to the specific tests.
 
@@ -519,7 +519,7 @@
 
   $ py.test -m interface --tb=short
   =========================== test session starts ============================
-  platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+  platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
   collected 4 items
   
   test_module.py FF
@@ -540,7 +540,7 @@
 
   $ py.test -m "interface or event" --tb=short
   =========================== test session starts ============================
-  platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+  platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
   collected 4 items
   
   test_module.py FFF
@@ -559,4 +559,4 @@
       assert 0
   E   assert 0
   ============= 1 tests deselected by "-m 'interface or event'" ==============
-  ================== 3 failed, 1 deselected in 0.02 seconds ==================
+  ================== 3 failed, 1 deselected in 0.01 seconds ==================

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/nonpython.txt
--- a/doc/en/example/nonpython.txt
+++ b/doc/en/example/nonpython.txt
@@ -27,7 +27,7 @@
 
     nonpython $ py.test test_simple.yml
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_simple.yml .F
@@ -56,11 +56,11 @@
 
     nonpython $ py.test -v
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 2 items
     
-    test_simple.yml at 1::usecase: ok PASSED
-    test_simple.yml at 1::usecase: hello FAILED
+    test_simple.yml::usecase: ok PASSED
+    test_simple.yml::usecase: hello FAILED
     
     ================================= FAILURES =================================
     ______________________________ usecase: hello ______________________________
@@ -74,7 +74,7 @@
 
     nonpython $ py.test --collect-only
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     <YamlFile 'test_simple.yml'><YamlItem 'ok'>

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/parametrize.txt
--- a/doc/en/example/parametrize.txt
+++ b/doc/en/example/parametrize.txt
@@ -106,7 +106,7 @@
 
     $ py.test test_scenarios.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 4 items
     
     test_scenarios.py ....
@@ -118,7 +118,7 @@
 
     $ py.test --collect-only test_scenarios.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 4 items
     <Module 'test_scenarios.py'><Class 'TestSampleWithScenarios'>
@@ -182,7 +182,7 @@
 
     $ py.test test_backends.py --collect-only
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     <Module 'test_backends.py'><Function 'test_db_initialized[d1]'>
@@ -197,7 +197,7 @@
     ================================= FAILURES =================================
     _________________________ test_db_initialized[d2] __________________________
     
-    db = <conftest.DB2 instance at 0x2b45c2b12050>
+    db = <conftest.DB2 object at 0x2b83684b5eb8>
     
         def test_db_initialized(db):
             # a dummy test
@@ -251,9 +251,9 @@
     $ py.test -q
     F..
     ================================= FAILURES =================================
-    ________________________ TestClass.test_equals[1-2] ________________________
+    ________________________ TestClass.test_equals[2-1] ________________________
     
-    self = <test_parametrize.TestClass instance at 0x2acd519c6200>, a = 1, b = 2
+    self = <test_parametrize.TestClass object at 0x2ae94130e390>, a = 1, b = 2
     
         def test_equals(self, a, b):
     >       assert a == b
@@ -281,10 +281,10 @@
    . $ py.test -rs -q multipython.py
    ssssssssssssssssssssssssssssssssssss......sssssssss......ssssssssssssssssss
    ========================= short test summary info ==========================
+   SKIP [21] /home/hpk/p/pytest/doc/en/example/multipython.py:22: 'python2.5' not found
+   SKIP [21] /home/hpk/p/pytest/doc/en/example/multipython.py:22: 'python2.8' not found
    SKIP [21] /home/hpk/p/pytest/doc/en/example/multipython.py:22: 'python2.4' not found
-   SKIP [21] /home/hpk/p/pytest/doc/en/example/multipython.py:22: 'python2.8' not found
-   SKIP [21] /home/hpk/p/pytest/doc/en/example/multipython.py:22: 'python2.5' not found
-   12 passed, 63 skipped in 0.66 seconds
+   12 passed, 63 skipped in 0.65 seconds
 
 Indirect parametrization of optional implementations/imports
 --------------------------------------------------------------------
@@ -331,12 +331,12 @@
 
     $ py.test -rs test_module.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_module.py .s
     ========================= short test summary info ==========================
-    SKIP [1] /tmp/doc-exec-144/conftest.py:10: could not import 'opt2'
+    SKIP [1] /tmp/doc-exec-240/conftest.py:10: could not import 'opt2'
     
     =================== 1 passed, 1 skipped in 0.01 seconds ====================
 

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/pythoncollection.txt
--- a/doc/en/example/pythoncollection.txt
+++ b/doc/en/example/pythoncollection.txt
@@ -43,7 +43,7 @@
 
     $ py.test --collect-only
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     <Module 'check_myapp.py'><Class 'CheckMyApp'>
@@ -88,7 +88,7 @@
 
     . $ py.test --collect-only pythoncollection.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 3 items
     <Module 'pythoncollection.py'><Function 'test_function'>
@@ -141,10 +141,8 @@
 
     $ py.test --collect-only
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
-    collected 1 items
-    <Module 'pkg/module_py2.py'>
-      <Function 'test_only_on_python2'>
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
+    collected 0 items
     
     =============================  in 0.01 seconds =============================
 

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/reportingdemo.txt
--- a/doc/en/example/reportingdemo.txt
+++ b/doc/en/example/reportingdemo.txt
@@ -13,7 +13,7 @@
 
     assertion $ py.test failure_demo.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 39 items
     
     failure_demo.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@@ -30,7 +30,7 @@
     failure_demo.py:15: AssertionError
     _________________________ TestFailing.test_simple __________________________
     
-    self = <failure_demo.TestFailing object at 0x2afa614fb790>
+    self = <failure_demo.TestFailing object at 0x2aec3e52d470>
     
         def test_simple(self):
             def f():
@@ -40,13 +40,13 @@
         
     >       assert f() == g()
     E       assert 42 == 43
-    E        +  where 42 = <function f at 0x2afa6158a5f0>()
-    E        +  and   43 = <function g at 0x2afa6158a7d0>()
+    E        +  where 42 = <function TestFailing.test_simple.<locals>.f at 0x2aec3e47b158>()
+    E        +  and   43 = <function TestFailing.test_simple.<locals>.g at 0x2aec3e47b268>()
     
     failure_demo.py:28: AssertionError
     ____________________ TestFailing.test_simple_multiline _____________________
     
-    self = <failure_demo.TestFailing object at 0x2afa60d16b50>
+    self = <failure_demo.TestFailing object at 0x2aec3e474ac8>
     
         def test_simple_multiline(self):
             otherfunc_multi(
@@ -66,19 +66,19 @@
     failure_demo.py:11: AssertionError
     ___________________________ TestFailing.test_not ___________________________
     
-    self = <failure_demo.TestFailing object at 0x2afa61560ad0>
+    self = <failure_demo.TestFailing object at 0x2aec3e5156a0>
     
         def test_not(self):
             def f():
                 return 42
     >       assert not f()
     E       assert not 42
-    E        +  where 42 = <function f at 0x2afa6158a6e0>()
+    E        +  where 42 = <function TestFailing.test_not.<locals>.f at 0x2aec3e47e620>()
     
     failure_demo.py:38: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_text _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa6154fc90>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e50cba8>
     
         def test_eq_text(self):
     >       assert 'spam' == 'eggs'
@@ -89,7 +89,7 @@
     failure_demo.py:42: AssertionError
     _____________ TestSpecialisedExplanations.test_eq_similar_text _____________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60da1d10>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4e24e0>
     
         def test_eq_similar_text(self):
     >       assert 'foo 1 bar' == 'foo 2 bar'
@@ -102,7 +102,7 @@
     failure_demo.py:45: AssertionError
     ____________ TestSpecialisedExplanations.test_eq_multiline_text ____________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60d45a90>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4cc6d8>
     
         def test_eq_multiline_text(self):
     >       assert 'foo\nspam\nbar' == 'foo\neggs\nbar'
@@ -115,7 +115,7 @@
     failure_demo.py:48: AssertionError
     ______________ TestSpecialisedExplanations.test_eq_long_text _______________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60d0de50>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e501908>
     
         def test_eq_long_text(self):
             a = '1'*100 + 'a' + '2'*100
@@ -132,7 +132,7 @@
     failure_demo.py:53: AssertionError
     _________ TestSpecialisedExplanations.test_eq_long_text_multiline __________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa6154fbd0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e3af048>
     
         def test_eq_long_text_multiline(self):
             a = '1\n'*100 + 'a' + '2\n'*100
@@ -156,7 +156,7 @@
     failure_demo.py:58: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_list _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60d16290>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e474c50>
     
         def test_eq_list(self):
     >       assert [0, 1, 2] == [0, 1, 3]
@@ -166,7 +166,7 @@
     failure_demo.py:61: AssertionError
     ______________ TestSpecialisedExplanations.test_eq_list_long _______________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60da1c50>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e515dd8>
     
         def test_eq_list_long(self):
             a = [0]*100 + [1] + [3]*100
@@ -178,7 +178,7 @@
     failure_demo.py:66: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_dict _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60d45d90>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4a5ef0>
     
         def test_eq_dict(self):
     >       assert {'a': 0, 'b': 1, 'c': 0} == {'a': 0, 'b': 2, 'd': 0}
@@ -194,7 +194,7 @@
     failure_demo.py:69: AssertionError
     _________________ TestSpecialisedExplanations.test_eq_set __________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa614fb3d0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4a2e48>
     
         def test_eq_set(self):
     >       assert set([0, 10, 11, 12]) == set([0, 20, 21])
@@ -210,7 +210,7 @@
     failure_demo.py:72: AssertionError
     _____________ TestSpecialisedExplanations.test_eq_longer_list ______________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa61560bd0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4e0c50>
     
         def test_eq_longer_list(self):
     >       assert [1,2] == [1,2,3]
@@ -220,7 +220,7 @@
     failure_demo.py:75: AssertionError
     _________________ TestSpecialisedExplanations.test_in_list _________________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa6154fc10>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4950f0>
     
         def test_in_list(self):
     >       assert 1 in [0, 2, 3, 4, 5]
@@ -229,7 +229,7 @@
     failure_demo.py:78: AssertionError
     __________ TestSpecialisedExplanations.test_not_in_text_multiline __________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60d0db50>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e474f98>
     
         def test_not_in_text_multiline(self):
             text = 'some multiline\ntext\nwhich\nincludes foo\nand a\ntail'
@@ -247,7 +247,7 @@
     failure_demo.py:82: AssertionError
     ___________ TestSpecialisedExplanations.test_not_in_text_single ____________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa61548810>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e5333c8>
     
         def test_not_in_text_single(self):
             text = 'single foo line'
@@ -260,7 +260,7 @@
     failure_demo.py:86: AssertionError
     _________ TestSpecialisedExplanations.test_not_in_text_single_long _________
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa614f9fd0>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e4ccb70>
     
         def test_not_in_text_single_long(self):
             text = 'head ' * 50 + 'foo ' + 'tail ' * 20
@@ -273,7 +273,7 @@
     failure_demo.py:90: AssertionError
     ______ TestSpecialisedExplanations.test_not_in_text_single_long_term _______
     
-    self = <failure_demo.TestSpecialisedExplanations object at 0x2afa60da1d50>
+    self = <failure_demo.TestSpecialisedExplanations object at 0x2aec3e502080>
     
         def test_not_in_text_single_long_term(self):
             text = 'head ' * 50 + 'f'*70 + 'tail ' * 20
@@ -292,7 +292,7 @@
             i = Foo()
     >       assert i.b == 2
     E       assert 1 == 2
-    E        +  where 1 = <failure_demo.Foo object at 0x2afa61548510>.b
+    E        +  where 1 = <failure_demo.test_attribute.<locals>.Foo object at 0x2aec3e519c18>.b
     
     failure_demo.py:101: AssertionError
     _________________________ test_attribute_instance __________________________
@@ -302,8 +302,8 @@
                 b = 1
     >       assert Foo().b == 2
     E       assert 1 == 2
-    E        +  where 1 = <failure_demo.Foo object at 0x2afa60d16610>.b
-    E        +    where <failure_demo.Foo object at 0x2afa60d16610> = <class 'failure_demo.Foo'>()
+    E        +  where 1 = <failure_demo.test_attribute_instance.<locals>.Foo object at 0x2aec3e52d898>.b
+    E        +    where <failure_demo.test_attribute_instance.<locals>.Foo object at 0x2aec3e52d898> = <class 'failure_demo.test_attribute_instance.<locals>.Foo'>()
     
     failure_demo.py:107: AssertionError
     __________________________ test_attribute_failure __________________________
@@ -319,7 +319,7 @@
     failure_demo.py:116: 
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
     
-    self = <failure_demo.Foo object at 0x2afa614fb1d0>
+    self = <failure_demo.test_attribute_failure.<locals>.Foo object at 0x2aec3e4e0b38>
     
         def _get_b(self):
     >       raise Exception('Failed to get attrib')
@@ -335,15 +335,15 @@
                 b = 2
     >       assert Foo().b == Bar().b
     E       assert 1 == 2
-    E        +  where 1 = <failure_demo.Foo object at 0x2afa60da1f50>.b
-    E        +    where <failure_demo.Foo object at 0x2afa60da1f50> = <class 'failure_demo.Foo'>()
-    E        +  and   2 = <failure_demo.Bar object at 0x2afa61505c50>.b
-    E        +    where <failure_demo.Bar object at 0x2afa61505c50> = <class 'failure_demo.Bar'>()
+    E        +  where 1 = <failure_demo.test_attribute_multiple.<locals>.Foo object at 0x2aec3e4a5748>.b
+    E        +    where <failure_demo.test_attribute_multiple.<locals>.Foo object at 0x2aec3e4a5748> = <class 'failure_demo.test_attribute_multiple.<locals>.Foo'>()
+    E        +  and   2 = <failure_demo.test_attribute_multiple.<locals>.Bar object at 0x2aec3e4a51d0>.b
+    E        +    where <failure_demo.test_attribute_multiple.<locals>.Bar object at 0x2aec3e4a51d0> = <class 'failure_demo.test_attribute_multiple.<locals>.Bar'>()
     
     failure_demo.py:124: AssertionError
     __________________________ TestRaises.test_raises __________________________
     
-    self = <failure_demo.TestRaises instance at 0x2afa60d78440>
+    self = <failure_demo.TestRaises object at 0x2aec3e4a2d68>
     
         def test_raises(self):
             s = 'qwe'
@@ -355,10 +355,10 @@
     >   int(s)
     E   ValueError: invalid literal for int() with base 10: 'qwe'
     
-    <0-codegen /home/hpk/p/pytest/.tox/regen/local/lib/python2.7/site-packages/_pytest/python.py:1028>:1: ValueError
+    <0-codegen /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/python.py:1028>:1: ValueError
     ______________________ TestRaises.test_raises_doesnt _______________________
     
-    self = <failure_demo.TestRaises instance at 0x2afa6153a7a0>
+    self = <failure_demo.TestRaises object at 0x2aec3e4e2198>
     
         def test_raises_doesnt(self):
     >       raises(IOError, "int('3')")
@@ -367,7 +367,7 @@
     failure_demo.py:136: Failed
     __________________________ TestRaises.test_raise ___________________________
     
-    self = <failure_demo.TestRaises instance at 0x2afa61542128>
+    self = <failure_demo.TestRaises object at 0x2aec3e5017b8>
     
         def test_raise(self):
     >       raise ValueError("demo error")
@@ -376,7 +376,7 @@
     failure_demo.py:139: ValueError
     ________________________ TestRaises.test_tupleerror ________________________
     
-    self = <failure_demo.TestRaises instance at 0x2afa60dc9e60>
+    self = <failure_demo.TestRaises object at 0x2aec3e533160>
     
         def test_tupleerror(self):
     >       a,b = [1]
@@ -385,7 +385,7 @@
     failure_demo.py:142: ValueError
     ______ TestRaises.test_reinterpret_fails_with_print_for_the_fun_of_it ______
     
-    self = <failure_demo.TestRaises instance at 0x2afa60d69b90>
+    self = <failure_demo.TestRaises object at 0x2aec3e4cc438>
     
         def test_reinterpret_fails_with_print_for_the_fun_of_it(self):
             l = [1,2,3]
@@ -398,11 +398,11 @@
     l is [1, 2, 3]
     ________________________ TestRaises.test_some_error ________________________
     
-    self = <failure_demo.TestRaises instance at 0x2afa60d5c680>
+    self = <failure_demo.TestRaises object at 0x2aec3e5199e8>
     
         def test_some_error(self):
     >       if namenotexi:
-    E       NameError: global name 'namenotexi' is not defined
+    E       NameError: name 'namenotexi' is not defined
     
     failure_demo.py:150: NameError
     ____________________ test_dynamic_compile_shows_nicely _____________________
@@ -426,7 +426,7 @@
     <2-codegen 'abc-123' /home/hpk/p/pytest/doc/en/example/assertion/failure_demo.py:162>:2: AssertionError
     ____________________ TestMoreErrors.test_complex_error _____________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa60d6b1b8>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e515cf8>
     
         def test_complex_error(self):
             def f():
@@ -450,7 +450,7 @@
     failure_demo.py:5: AssertionError
     ___________________ TestMoreErrors.test_z1_unpack_error ____________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa61546ef0>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e4f7a58>
     
         def test_z1_unpack_error(self):
             l = []
@@ -460,7 +460,7 @@
     failure_demo.py:179: ValueError
     ____________________ TestMoreErrors.test_z2_type_error _____________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa60d5e680>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e52db38>
     
         def test_z2_type_error(self):
             l = 3
@@ -470,19 +470,19 @@
     failure_demo.py:183: TypeError
     ______________________ TestMoreErrors.test_startswith ______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa60d697e8>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e538a58>
     
         def test_startswith(self):
             s = "123"
             g = "456"
     >       assert s.startswith(g)
-    E       assert <built-in method startswith of str object at 0x2afa61549a08>('456')
-    E        +  where <built-in method startswith of str object at 0x2afa61549a08> = '123'.startswith
+    E       assert <built-in method startswith of str object at 0x2aec3e501420>('456')
+    E        +  where <built-in method startswith of str object at 0x2aec3e501420> = '123'.startswith
     
     failure_demo.py:188: AssertionError
     __________________ TestMoreErrors.test_startswith_nested ___________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa60d4dfc8>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e4f1b00>
     
         def test_startswith_nested(self):
             def f():
@@ -490,15 +490,15 @@
             def g():
                 return "456"
     >       assert f().startswith(g())
-    E       assert <built-in method startswith of str object at 0x2afa61549a08>('456')
-    E        +  where <built-in method startswith of str object at 0x2afa61549a08> = '123'.startswith
-    E        +    where '123' = <function f at 0x2afa60d37b90>()
-    E        +  and   '456' = <function g at 0x2afa60d37e60>()
+    E       assert <built-in method startswith of str object at 0x2aec3e501420>('456')
+    E        +  where <built-in method startswith of str object at 0x2aec3e501420> = '123'.startswith
+    E        +    where '123' = <function TestMoreErrors.test_startswith_nested.<locals>.f at 0x2aec3e5572f0>()
+    E        +  and   '456' = <function TestMoreErrors.test_startswith_nested.<locals>.g at 0x2aec3e557268>()
     
     failure_demo.py:195: AssertionError
     _____________________ TestMoreErrors.test_global_func ______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa60d4ecf8>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e495438>
     
         def test_global_func(self):
     >       assert isinstance(globf(42), float)
@@ -508,18 +508,18 @@
     failure_demo.py:198: AssertionError
     _______________________ TestMoreErrors.test_instance _______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa614fea28>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e567240>
     
         def test_instance(self):
             self.x = 6*7
     >       assert self.x != 42
     E       assert 42 != 42
-    E        +  where 42 = <failure_demo.TestMoreErrors instance at 0x2afa614fea28>.x
+    E        +  where 42 = <failure_demo.TestMoreErrors object at 0x2aec3e567240>.x
     
     failure_demo.py:202: AssertionError
     _______________________ TestMoreErrors.test_compare ________________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa614fe0e0>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e502cc0>
     
         def test_compare(self):
     >       assert globf(10) < 5
@@ -529,7 +529,7 @@
     failure_demo.py:205: AssertionError
     _____________________ TestMoreErrors.test_try_finally ______________________
     
-    self = <failure_demo.TestMoreErrors instance at 0x2afa60d6b830>
+    self = <failure_demo.TestMoreErrors object at 0x2aec3e5197f0>
     
         def test_try_finally(self):
             x = 1
@@ -538,4 +538,4 @@
     E           assert 1 == 0
     
     failure_demo.py:210: AssertionError
-    ======================== 39 failed in 0.21 seconds =========================
+    ======================== 39 failed in 0.22 seconds =========================

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/simple.txt
--- a/doc/en/example/simple.txt
+++ b/doc/en/example/simple.txt
@@ -108,7 +108,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 0 items
     
     =============================  in 0.00 seconds =============================
@@ -152,12 +152,12 @@
 
     $ py.test -rs    # "-rs" means report details on the little 's'
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_module.py .s
     ========================= short test summary info ==========================
-    SKIP [1] /tmp/doc-exec-147/conftest.py:9: need --runslow option to run
+    SKIP [1] /tmp/doc-exec-243/conftest.py:9: need --runslow option to run
     
     =================== 1 passed, 1 skipped in 0.01 seconds ====================
 
@@ -165,7 +165,7 @@
 
     $ py.test --runslow
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_module.py ..
@@ -256,7 +256,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     project deps: mylib-1.1
     collected 0 items
     
@@ -279,7 +279,7 @@
 
     $ py.test -v
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     info1: did you know that ...
     did you?
     collecting ... collected 0 items
@@ -290,7 +290,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 0 items
     
     =============================  in 0.00 seconds =============================
@@ -322,7 +322,7 @@
 
     $ py.test --durations=3
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 3 items
     
     test_some_are_slow.py ...
@@ -383,7 +383,7 @@
 
     $ py.test -rx
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 4 items
     
     test_step.py .Fx.
@@ -391,7 +391,7 @@
     ================================= FAILURES =================================
     ____________________ TestUserHandling.test_modification ____________________
     
-    self = <test_step.TestUserHandling instance at 0x2aca13f66e18>
+    self = <test_step.TestUserHandling object at 0x2b2ef2a4feb8>
     
         def test_modification(self):
     >       assert 0
@@ -453,7 +453,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 7 items
     
     test_step.py .Fx.
@@ -463,17 +463,17 @@
     
     ================================== ERRORS ==================================
     _______________________ ERROR at setup of test_root ________________________
-    file /tmp/doc-exec-147/b/test_error.py, line 1
+    file /tmp/doc-exec-243/b/test_error.py, line 1
       def test_root(db):  # no db here, will error out
             fixture 'db' not found
-            available fixtures: tmpdir, monkeypatch, pytestconfig, recwarn, capsys, capfd
+            available fixtures: tmpdir, monkeypatch, capsys, capfd, pytestconfig, recwarn
             use 'py.test --fixtures [testpath]' for help on them.
     
-    /tmp/doc-exec-147/b/test_error.py:1
+    /tmp/doc-exec-243/b/test_error.py:1
     ================================= FAILURES =================================
     ____________________ TestUserHandling.test_modification ____________________
     
-    self = <test_step.TestUserHandling instance at 0x2afc14d78e18>
+    self = <test_step.TestUserHandling object at 0x2b63a7aec710>
     
         def test_modification(self):
     >       assert 0
@@ -482,20 +482,20 @@
     test_step.py:9: AssertionError
     _________________________________ test_a1 __________________________________
     
-    db = <conftest.DB instance at 0x2afc145495a8>
+    db = <conftest.DB object at 0x2b63a7b04470>
     
         def test_a1(db):
     >       assert 0, db  # to show value
-    E       AssertionError: <conftest.DB instance at 0x2afc145495a8>
+    E       AssertionError: <conftest.DB object at 0x2b63a7b04470>
     
     a/test_db.py:2: AssertionError
     _________________________________ test_a2 __________________________________
     
-    db = <conftest.DB instance at 0x2afc145495a8>
+    db = <conftest.DB object at 0x2b63a7b04470>
     
         def test_a2(db):
     >       assert 0, db  # to show value
-    E       AssertionError: <conftest.DB instance at 0x2afc145495a8>
+    E       AssertionError: <conftest.DB object at 0x2b63a7b04470>
     
     a/test_db2.py:2: AssertionError
     ========== 3 failed, 2 passed, 1 xfailed, 1 error in 0.03 seconds ==========
@@ -553,7 +553,7 @@
 
     $ py.test test_module.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_module.py FF
@@ -561,7 +561,7 @@
     ================================= FAILURES =================================
     ________________________________ test_fail1 ________________________________
     
-    tmpdir = local('/tmp/pytest-28/test_fail10')
+    tmpdir = local('/tmp/pytest-509/test_fail10')
     
         def test_fail1(tmpdir):
     >       assert 0
@@ -575,12 +575,12 @@
     E       assert 0
     
     test_module.py:4: AssertionError
-    ========================= 2 failed in 0.01 seconds =========================
+    ========================= 2 failed in 0.02 seconds =========================
 
 you will have a "failures" file which contains the failing test ids::
 
     $ cat failures
-    test_module.py::test_fail1 (/tmp/pytest-28/test_fail10)
+    test_module.py::test_fail1 (/tmp/pytest-509/test_fail10)
     test_module.py::test_fail2
 
 Making test result information available in fixtures
@@ -642,41 +642,29 @@
 and run it::
 
     $ py.test -s test_module.py
-    =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
-    collected 3 items
+    Traceback (most recent call last):
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/config.py", line 513, in getconftestmodules
+        return self._path2confmods[path]
+    KeyError: local('/tmp/doc-exec-243/test_module.py')
     
-    test_module.py Esetting up a test failed! test_module.py::test_setup_fails
-    Fexecuting test failed test_module.py::test_call_fails
-    F
+    During handling of the above exception, another exception occurred:
+    Traceback (most recent call last):
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/config.py", line 537, in importconftest
+        return self._conftestpath2mod[conftestpath]
+    KeyError: local('/tmp/doc-exec-243/conftest.py')
     
-    ================================== ERRORS ==================================
-    ____________________ ERROR at setup of test_setup_fails ____________________
+    During handling of the above exception, another exception occurred:
+    Traceback (most recent call last):
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/config.py", line 543, in importconftest
+        mod = conftestpath.pyimport()
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/py/_path/local.py", line 620, in pyimport
+        __import__(modname)
+      File "/tmp/doc-exec-243/conftest.py", line 22
+        print "setting up a test failed!", request.node.nodeid
+                                        ^
+    SyntaxError: invalid syntax
+    ERROR: could not load /tmp/doc-exec-243/conftest.py
     
-        @pytest.fixture
-        def other():
-    >       assert 0
-    E       assert 0
-    
-    test_module.py:6: AssertionError
-    ================================= FAILURES =================================
-    _____________________________ test_call_fails ______________________________
-    
-    something = None
-    
-        def test_call_fails(something):
-    >       assert 0
-    E       assert 0
-    
-    test_module.py:12: AssertionError
-    ________________________________ test_fail2 ________________________________
-    
-        def test_fail2():
-    >       assert 0
-    E       assert 0
-    
-    test_module.py:15: AssertionError
-    ==================== 2 failed, 1 error in 0.01 seconds =====================
 
 You'll see that the fixture finalizers could use the precise reporting
 information.
@@ -736,4 +724,5 @@
 This makes it convenient to execute your tests from within your frozen
 application, using standard ``py.test`` command-line::
 
-    $ ./app_main --pytest --verbose --tb=long --junit-xml=results.xml test-suite/
\ No newline at end of file
+    $ ./app_main --pytest --verbose --tb=long --junit-xml=results.xml test-suite/    /bin/sh: 1: ./app_main: not found
+    /bin/sh: 1: ./app_main: not found

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/special.txt
--- a/doc/en/example/special.txt
+++ b/doc/en/example/special.txt
@@ -60,13 +60,26 @@
 If you run this without output capturing::
 
     $ py.test -q -s test_module.py 
-    callattr_ahead_of_alltests called
-    callme called!
-    callme other called
-    SomeTest callme called
-    test_method1 called
-    .test_method1 called
-    .test other
-    .test_unit1 method called
-    .
-    4 passed in 0.03 seconds
+    Traceback (most recent call last):
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/config.py", line 513, in getconftestmodules
+        return self._path2confmods[path]
+    KeyError: local('/tmp/doc-exec-244/test_module.py')
+    
+    During handling of the above exception, another exception occurred:
+    Traceback (most recent call last):
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/config.py", line 537, in importconftest
+        return self._conftestpath2mod[conftestpath]
+    KeyError: local('/tmp/doc-exec-244/conftest.py')
+    
+    During handling of the above exception, another exception occurred:
+    Traceback (most recent call last):
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/config.py", line 543, in importconftest
+        mod = conftestpath.pyimport()
+      File "/home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/py/_path/local.py", line 620, in pyimport
+        __import__(modname)
+      File "/tmp/doc-exec-244/conftest.py", line 6
+        print "callattr_ahead_of_alltests called"
+                                                ^
+    SyntaxError: invalid syntax
+    ERROR: could not load /tmp/doc-exec-244/conftest.py
+    

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/example/xfail_demo.py
--- a/doc/en/example/xfail_demo.py
+++ b/doc/en/example/xfail_demo.py
@@ -25,6 +25,6 @@
     pytest.xfail("reason")
 
 @xfail(raises=IndexError)
-def test_hello7()
+def test_hello7():
     x = []
     x[1] = 1

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/fixture.txt
--- a/doc/en/fixture.txt
+++ b/doc/en/fixture.txt
@@ -76,7 +76,7 @@
 
     $ py.test test_smtpsimple.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_smtpsimple.py F
@@ -84,17 +84,16 @@
     ================================= FAILURES =================================
     ________________________________ test_ehlo _________________________________
     
-    smtp = <smtplib.SMTP instance at 0x2b8dbdd43638>
+    smtp = <smtplib.SMTP object at 0x2ba44047c390>
     
         def test_ehlo(smtp):
             response, msg = smtp.ehlo()
             assert response == 250
-            assert "merlinux" in msg
-    >       assert 0 # for demo purposes
-    E       assert 0
+    >       assert "merlinux" in msg
+    E       TypeError: Type str doesn't support the buffer API
     
-    test_smtpsimple.py:12: AssertionError
-    ========================= 1 failed in 0.15 seconds =========================
+    test_smtpsimple.py:11: TypeError
+    ========================= 1 failed in 0.18 seconds =========================
 
 In the failure traceback we see that the test function was called with a
 ``smtp`` argument, the ``smtplib.SMTP()`` instance created by the fixture
@@ -194,7 +193,7 @@
 
     $ py.test test_module.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_module.py FF
@@ -202,19 +201,18 @@
     ================================= FAILURES =================================
     ________________________________ test_ehlo _________________________________
     
-    smtp = <smtplib.SMTP instance at 0x2b0d30a59f38>
+    smtp = <smtplib.SMTP object at 0x2b37ace44fd0>
     
         def test_ehlo(smtp):
             response = smtp.ehlo()
             assert response[0] == 250
-            assert "merlinux" in response[1]
-    >       assert 0  # for demo purposes
-    E       assert 0
+    >       assert "merlinux" in response[1]
+    E       TypeError: Type str doesn't support the buffer API
     
-    test_module.py:6: AssertionError
+    test_module.py:5: TypeError
     ________________________________ test_noop _________________________________
     
-    smtp = <smtplib.SMTP instance at 0x2b0d30a59f38>
+    smtp = <smtplib.SMTP object at 0x2b37ace44fd0>
     
         def test_noop(smtp):
             response = smtp.noop()
@@ -223,7 +221,7 @@
     E       assert 0
     
     test_module.py:11: AssertionError
-    ========================= 2 failed in 0.16 seconds =========================
+    ========================= 2 failed in 0.18 seconds =========================
 
 You see the two ``assert 0`` failing and more importantly you can also see
 that the same (module-scoped) ``smtp`` object was passed into the two
@@ -271,7 +269,7 @@
     $ py.test -s -q --tb=no
     FFteardown smtp
     
-    2 failed in 0.16 seconds
+    2 failed in 0.22 seconds
 
 We see that the ``smtp`` instance is finalized after the two
 tests finished execution.  Note that if we decorated our fixture
@@ -312,7 +310,7 @@
 
     $ py.test -s -q --tb=no
     FF
-    2 failed in 0.17 seconds
+    2 failed in 0.19 seconds
 
 Let's quickly create another test module that actually sets the
 server URL in its module namespace::
@@ -332,7 +330,7 @@
     ______________________________ test_showhelo _______________________________
     test_anothersmtp.py:5: in test_showhelo
         assert 0, smtp.helo()
-    E   AssertionError: (250, 'mail.python.org')
+    E   AssertionError: (250, b'mail.python.org')
 
 voila! The ``smtp`` fixture function picked up our mail server name
 from the module namespace.
@@ -379,19 +377,18 @@
     ================================= FAILURES =================================
     __________________________ test_ehlo[merlinux.eu] __________________________
     
-    smtp = <smtplib.SMTP instance at 0x2ba3fee43950>
+    smtp = <smtplib.SMTP object at 0x2b5a2bc0e048>
     
         def test_ehlo(smtp):
             response = smtp.ehlo()
             assert response[0] == 250
-            assert "merlinux" in response[1]
-    >       assert 0  # for demo purposes
-    E       assert 0
+    >       assert "merlinux" in response[1]
+    E       TypeError: Type str doesn't support the buffer API
     
-    test_module.py:6: AssertionError
+    test_module.py:5: TypeError
     __________________________ test_noop[merlinux.eu] __________________________
     
-    smtp = <smtplib.SMTP instance at 0x2ba3fee43950>
+    smtp = <smtplib.SMTP object at 0x2b5a2bc0e048>
     
         def test_noop(smtp):
             response = smtp.noop()
@@ -402,20 +399,20 @@
     test_module.py:11: AssertionError
     ________________________ test_ehlo[mail.python.org] ________________________
     
-    smtp = <smtplib.SMTP instance at 0x2ba3fedf9ea8>
+    smtp = <smtplib.SMTP object at 0x2b5a2bdb3ac8>
     
         def test_ehlo(smtp):
             response = smtp.ehlo()
             assert response[0] == 250
     >       assert "merlinux" in response[1]
-    E       assert 'merlinux' in 'mail.python.org\nSIZE 25600000\nETRN\nSTARTTLS\nENHANCEDSTATUSCODES\n8BITMIME\nDSN\nSMTPUTF8'
+    E       TypeError: Type str doesn't support the buffer API
     
-    test_module.py:5: AssertionError
+    test_module.py:5: TypeError
     -------------------------- Captured stdout setup ---------------------------
-    finalizing <smtplib.SMTP instance at 0x2ba3fee43950>
+    finalizing <smtplib.SMTP object at 0x2b5a2bc0e048>
     ________________________ test_noop[mail.python.org] ________________________
     
-    smtp = <smtplib.SMTP instance at 0x2ba3fedf9ea8>
+    smtp = <smtplib.SMTP object at 0x2b5a2bdb3ac8>
     
         def test_noop(smtp):
             response = smtp.noop()
@@ -424,7 +421,7 @@
     E       assert 0
     
     test_module.py:11: AssertionError
-    4 failed in 5.62 seconds
+    4 failed in 6.25 seconds
 
 We see that our two test functions each ran twice, against the different
 ``smtp`` instances.  Note also, that with the ``mail.python.org``
@@ -464,13 +461,13 @@
 
     $ py.test -v test_appsetup.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
     collecting ... collected 2 items
     
-    test_appsetup.py at 12::test_smtp_exists[merlinux.eu] PASSED
-    test_appsetup.py at 12::test_smtp_exists[mail.python.org] PASSED
+    test_appsetup.py::test_smtp_exists[merlinux.eu] PASSED
+    test_appsetup.py::test_smtp_exists[mail.python.org] PASSED
     
-    ========================= 2 passed in 6.27 seconds =========================
+    ========================= 2 passed in 5.90 seconds =========================
 
 Due to the parametrization of ``smtp`` the test will run twice with two
 different ``App`` instances and respective smtp servers.  There is no
@@ -528,29 +525,20 @@
 
     $ py.test -v -s test_module.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0 -- /home/hpk/p/pytest/.tox/regen/bin/python
-    collecting ... collected 8 items
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1 -- /home/hpk/p/pytest/.tox/regen/bin/python3.4
+    collecting ... collected 0 items / 1 errors
     
-    test_module.py at 15::test_0[1]   test0 1
-    PASSED
-    test_module.py at 15::test_0[2]   test0 2
-    PASSED
-    test_module.py at 17::test_1[mod1] create mod1
-      test1 mod1
-    PASSED
-    test_module.py at 19::test_2[1-mod1]   test2 1 mod1
-    PASSED
-    test_module.py at 19::test_2[2-mod1]   test2 2 mod1
-    PASSED
-    test_module.py at 17::test_1[mod2] create mod2
-      test1 mod2
-    PASSED
-    test_module.py at 19::test_2[1-mod2]   test2 1 mod2
-    PASSED
-    test_module.py at 19::test_2[2-mod2]   test2 2 mod2
-    PASSED
-    
-    ========================= 8 passed in 0.01 seconds =========================
+    ================================== ERRORS ==================================
+    _____________________ ERROR collecting test_module.py ______________________
+    /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule
+        mod = self.fspath.pyimport(ensuresyspath=True)
+    /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/py/_path/local.py:620: in pyimport
+        __import__(modname)
+    E     File "/tmp/doc-exec-184/test_module.py", line 6
+    E       print "create", param
+    E                    ^
+    E   SyntaxError: invalid syntax
+    ========================= 1 error in 0.03 seconds ==========================
 
 You can see that the parametrized module-scoped ``modarg`` resource caused
 an ordering of test execution that lead to the fewest possible "active" resources. The finalizer for the ``mod1`` parametrized resource was executed

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/getting-started.txt
--- a/doc/en/getting-started.txt
+++ b/doc/en/getting-started.txt
@@ -27,7 +27,7 @@
 To check your installation has installed the correct version::
 
     $ py.test --version
-    This is pytest version 2.6.0, imported from /home/hpk/p/pytest/.tox/regen/local/lib/python2.7/site-packages/pytest.pyc
+    This is pytest version 2.6.1, imported from /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/pytest.py
 
 If you get an error checkout :ref:`installation issues`.
 
@@ -49,7 +49,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_sample.py F
@@ -127,7 +127,7 @@
     ================================= FAILURES =================================
     ____________________________ TestClass.test_two ____________________________
     
-    self = <test_class.TestClass instance at 0x2b0b0ac73098>
+    self = <test_class.TestClass object at 0x2ad4b005b710>
     
         def test_two(self):
             x = "hello"
@@ -159,21 +159,18 @@
 before performing the test function call.  Let's just run it::
 
     $ py.test -q test_tmpdir.py
-    F
-    ================================= FAILURES =================================
-    _____________________________ test_needsfiles ______________________________
     
-    tmpdir = local('/tmp/pytest-24/test_needsfiles0')
-    
-        def test_needsfiles(tmpdir):
-            print tmpdir
-    >       assert 0
-    E       assert 0
-    
-    test_tmpdir.py:3: AssertionError
-    --------------------------- Captured stdout call ---------------------------
-    /tmp/pytest-24/test_needsfiles0
-    1 failed in 0.01 seconds
+    ================================== ERRORS ==================================
+    _____________________ ERROR collecting test_tmpdir.py ______________________
+    /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule
+        mod = self.fspath.pyimport(ensuresyspath=True)
+    /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/py/_path/local.py:620: in pyimport
+        __import__(modname)
+    E     File "/tmp/doc-exec-187/test_tmpdir.py", line 2
+    E       print tmpdir
+    E                  ^
+    E   SyntaxError: invalid syntax
+    1 error in 0.03 seconds
 
 Before the test runs, a unique-per-test-invocation temporary directory
 was created.  More info at :ref:`tmpdir handling`.

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/parametrize.txt
--- a/doc/en/parametrize.txt
+++ b/doc/en/parametrize.txt
@@ -53,7 +53,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 3 items
     
     test_expectation.py ..F
@@ -100,7 +100,7 @@
 
     $ py.test
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 3 items
     
     test_expectation.py ..x
@@ -170,8 +170,8 @@
     
         def test_valid_string(stringinput):
     >       assert stringinput.isalpha()
-    E       assert <built-in method isalpha of str object at 0x2b7e70b5d210>()
-    E        +  where <built-in method isalpha of str object at 0x2b7e70b5d210> = '!'.isalpha
+    E       assert <built-in method isalpha of str object at 0x2ab7463a6b58>()
+    E        +  where <built-in method isalpha of str object at 0x2ab7463a6b58> = '!'.isalpha
     
     test_strings.py:3: AssertionError
     1 failed in 0.01 seconds
@@ -185,7 +185,7 @@
     $ py.test -q -rs test_strings.py
     s
     ========================= short test summary info ==========================
-    SKIP [1] /home/hpk/p/pytest/.tox/regen/local/lib/python2.7/site-packages/_pytest/python.py:1139: got empty parameter set, function test_valid_string at /tmp/doc-exec-100/test_strings.py:1
+    SKIP [1] /home/hpk/p/pytest/.tox/regen/lib/python3.4/site-packages/_pytest/python.py:1139: got empty parameter set, function test_valid_string at /tmp/doc-exec-195/test_strings.py:1
     1 skipped in 0.01 seconds
 
 For further examples, you might want to look at :ref:`more

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/skipping.txt
--- a/doc/en/skipping.txt
+++ b/doc/en/skipping.txt
@@ -164,10 +164,10 @@
 
     example $ py.test -rx xfail_demo.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
-    collected 6 items
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
+    collected 7 items
     
-    xfail_demo.py xxxxxx
+    xfail_demo.py xxxxxxx
     ========================= short test summary info ==========================
     XFAIL xfail_demo.py::test_hello
     XFAIL xfail_demo.py::test_hello2
@@ -180,8 +180,9 @@
       condition: pytest.__version__[0] != "17"
     XFAIL xfail_demo.py::test_hello6
       reason: reason
+    XFAIL xfail_demo.py::test_hello7
     
-    ======================== 6 xfailed in 0.05 seconds =========================
+    ======================== 7 xfailed in 0.05 seconds =========================
 
 .. _`skip/xfail with parametrize`:
 

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/tmpdir.txt
--- a/doc/en/tmpdir.txt
+++ b/doc/en/tmpdir.txt
@@ -29,7 +29,7 @@
 
     $ py.test test_tmpdir.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 1 items
     
     test_tmpdir.py F
@@ -37,7 +37,7 @@
     ================================= FAILURES =================================
     _____________________________ test_create_file _____________________________
     
-    tmpdir = local('/tmp/pytest-25/test_create_file0')
+    tmpdir = local('/tmp/pytest-506/test_create_file0')
     
         def test_create_file(tmpdir):
             p = tmpdir.mkdir("sub").join("hello.txt")
@@ -48,7 +48,7 @@
     E       assert 0
     
     test_tmpdir.py:7: AssertionError
-    ========================= 1 failed in 0.01 seconds =========================
+    ========================= 1 failed in 0.02 seconds =========================
 
 .. _`base temporary directory`:
 

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 doc/en/unittest.txt
--- a/doc/en/unittest.txt
+++ b/doc/en/unittest.txt
@@ -88,7 +88,7 @@
 
     $ py.test test_unittest_db.py
     =========================== test session starts ============================
-    platform linux2 -- Python 2.7.6 -- py-1.4.22 -- pytest-2.6.0
+    platform linux -- Python 3.4.0 -- py-1.4.23 -- pytest-2.6.1
     collected 2 items
     
     test_unittest_db.py FF
@@ -101,7 +101,7 @@
         def test_method1(self):
             assert hasattr(self, "db")
     >       assert 0, self.db   # fail for demo purposes
-    E       AssertionError: <conftest.DummyDB instance at 0x2ba71cccb128>
+    E       AssertionError: <conftest.db_class.<locals>.DummyDB object at 0x2b12849f90b8>
     
     test_unittest_db.py:9: AssertionError
     ___________________________ MyTest.test_method2 ____________________________
@@ -110,10 +110,10 @@
     
         def test_method2(self):
     >       assert 0, self.db   # fail for demo purposes
-    E       AssertionError: <conftest.DummyDB instance at 0x2ba71cccb128>
+    E       AssertionError: <conftest.db_class.<locals>.DummyDB object at 0x2b12849f90b8>
     
     test_unittest_db.py:12: AssertionError
-    ========================= 2 failed in 0.04 seconds =========================
+    ========================= 2 failed in 0.05 seconds =========================
 
 This default pytest traceback shows that the two test methods
 share the same ``self.db`` instance which was our intention
@@ -160,7 +160,7 @@
 
     $ py.test -q test_unittest_cleandir.py
     .
-    1 passed in 0.03 seconds
+    1 passed in 0.05 seconds
 
 ... gives us one passed test because the ``initdir`` fixture function
 was executed ahead of the ``test_method``.

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 setup.py
--- a/setup.py
+++ b/setup.py
@@ -27,7 +27,7 @@
         name='pytest',
         description='pytest: simple powerful testing with Python',
         long_description=long_description,
-        version='2.6.1.dev3',
+        version='2.6.1',
         url='http://pytest.org',
         license='MIT license',
         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],

diff -r 737cf55acf3c5401b44f13239fa3d9e87031d8a3 -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 tox.ini
--- a/tox.ini
+++ b/tox.ini
@@ -99,7 +99,7 @@
 commands= py.test -rfsxX --junitxml={envlogdir}/junit-{envname}.xml []
 
 [testenv:regen]
-basepython=python
+basepython=python3.4
 changedir=doc/en
 deps=sphinx
      PyYAML


https://bitbucket.org/hpk42/pytest/commits/d98b36d9786e/
Changeset:   d98b36d9786e
User:        hpk42
Date:        2014-08-07 22:55:17
Summary:     Added tag 2.6.1 for changeset a4f9639702ba
Affected #:  1 file

diff -r a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 -r d98b36d9786e113f0e047efb1480e05afcb4b14e .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -69,3 +69,4 @@
 60725b17a9d1af4100abb8be3f9f4ddf6262bf34 2.6.0
 60725b17a9d1af4100abb8be3f9f4ddf6262bf34 2.6.0
 88af949b9611494e2c65d528f9e565b00fb7e8ca 2.6.0
+a4f9639702baa3eb4f3b16e162f74f7b69f3f9e1 2.6.1


https://bitbucket.org/hpk42/pytest/commits/73f340b8e927/
Changeset:   73f340b8e927
User:        hpk42
Date:        2014-08-07 23:05:02
Summary:     fix doc config for latex
Affected #:  1 file

diff -r d98b36d9786e113f0e047efb1480e05afcb4b14e -r 73f340b8e9270e42d1ea43bf119ace3dfabf747f doc/en/conf.py
--- a/doc/en/conf.py
+++ b/doc/en/conf.py
@@ -18,7 +18,7 @@
 # The full version, including alpha/beta/rc tags.
 # The short X.Y version.
 version = "2.6"
-release = "2.6.0"
+release = "2.6.1"
 
 import sys, os
 
@@ -225,7 +225,7 @@
 
 # The name of an image file (relative to this directory) to place at the top of
 # the title page.
-#latex_logo = None
+latex_logo = 'img/pytest1.png'
 
 # For "manual" documents, if this is true, then toplevel headings are parts,
 # not chapters.

Repository URL: https://bitbucket.org/hpk42/pytest/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.


More information about the pytest-commit mailing list