regen docs, prepare release 2.2.1
This commit is contained in:
		
							parent
							
								
									4a08ee2b74
								
							
						
					
					
						commit
						3a3f69372f
					
				| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
Changes between 2.2.0 and 2.2.1.dev
 | 
					Changes between 2.2.0 and 2.2.1
 | 
				
			||||||
----------------------------------------
 | 
					----------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- fix issue99 (in pytest and py) internallerrors with resultlog now
 | 
					- fix issue99 (in pytest and py) internallerrors with resultlog now
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,2 +1,2 @@
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
__version__ = '2.2.1.dev5'
 | 
					__version__ = '2.2.1'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					pytest-2.2.1: bug fixes, perfect teardowns
 | 
				
			||||||
 | 
					===========================================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pytest-2.2.1 is a minor backward-compatible release of the the py.test
 | 
				
			||||||
 | 
					testing tool.   It contains bug fixes and little improvements, including
 | 
				
			||||||
 | 
					documentation fixes.  For general information see here:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     http://pytest.org/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To install or upgrade pytest:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    pip install -U pytest # or
 | 
				
			||||||
 | 
					    easy_install -U pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Special thanks for helping on this release to Ronny Pfannschmidt, Jurko
 | 
				
			||||||
 | 
					Gospodnetic and Ralf Schmitt.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					best,
 | 
				
			||||||
 | 
					holger krekel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Changes between 2.2.0 and 2.2.1
 | 
				
			||||||
 | 
					----------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- fix issue99 (in pytest and py) internallerrors with resultlog now
 | 
				
			||||||
 | 
					  produce better output - fixed by normalizing pytest_internalerror 
 | 
				
			||||||
 | 
					  input arguments.
 | 
				
			||||||
 | 
					- fix issue97 / traceback issues (in pytest and py) improve traceback output
 | 
				
			||||||
 | 
					  in conjunction with jinja2 and cython which hack tracebacks
 | 
				
			||||||
 | 
					- fix issue93 (in pytest and pytest-xdist) avoid "delayed teardowns":
 | 
				
			||||||
 | 
					  the final test in a test node will now run its teardown directly
 | 
				
			||||||
 | 
					  instead of waiting for the end of the session. Thanks Dave Hunt for
 | 
				
			||||||
 | 
					  the good reporting and feedback.  The pytest_runtest_protocol as well
 | 
				
			||||||
 | 
					  as the pytest_runtest_teardown hooks now have "nextitem" available 
 | 
				
			||||||
 | 
					  which will be None indicating the end of the test run.
 | 
				
			||||||
 | 
					- fix collection crash due to unknown-source collected items, thanks
 | 
				
			||||||
 | 
					  to Ralf Schmitt (fixed by depending on a more recent pylib)
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ you will see the return value of the function call::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_assert1.py
 | 
					    $ py.test test_assert1.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_assert1.py F
 | 
					    test_assert1.py F
 | 
				
			||||||
| 
						 | 
					@ -105,7 +105,7 @@ if you run this module::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_assert2.py
 | 
					    $ py.test test_assert2.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_assert2.py F
 | 
					    test_assert2.py F
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ You can ask for available builtin or project-custom
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --funcargs
 | 
					    $ py.test --funcargs
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collected 0 items
 | 
					    collected 0 items
 | 
				
			||||||
    pytestconfig
 | 
					    pytestconfig
 | 
				
			||||||
        the pytest config object with access to command line opts.
 | 
					        the pytest config object with access to command line opts.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ of the failing function and hide the other one::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test
 | 
					    $ py.test
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_module.py .F
 | 
					    test_module.py .F
 | 
				
			||||||
| 
						 | 
					@ -78,8 +78,8 @@ of the failing function and hide the other one::
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_module.py:9: AssertionError
 | 
					    test_module.py:9: AssertionError
 | 
				
			||||||
    ----------------------------- Captured stdout ------------------------------
 | 
					    ----------------------------- Captured stdout ------------------------------
 | 
				
			||||||
    setting up <function test_func2 at 0x101353a28>
 | 
					    setting up <function test_func2 at 0x101314c80>
 | 
				
			||||||
    ==================== 1 failed, 1 passed in 0.02 seconds ====================
 | 
					    ==================== 1 failed, 1 passed in 0.03 seconds ====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Accessing captured output from a test function
 | 
					Accessing captured output from a test function
 | 
				
			||||||
---------------------------------------------------
 | 
					---------------------------------------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,9 +44,10 @@ then you can just invoke ``py.test`` without command line options::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test
 | 
					    $ py.test
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    mymodule.py .
 | 
					    mymodule.py .
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ========================= 1 passed in 0.05 seconds =========================
 | 
					    ========================= 1 passed in 0.05 seconds =========================
 | 
				
			||||||
 | 
					    [?1034h
 | 
				
			||||||
| 
						 | 
					@ -25,26 +25,26 @@ You can "mark" a test function with custom metadata like this::
 | 
				
			||||||
You can then restrict a test run to only run tests marked with ``webtest``::
 | 
					You can then restrict a test run to only run tests marked with ``webtest``::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -v -m webtest
 | 
					    $ py.test -v -m webtest
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_server.py:3: test_send_http PASSED
 | 
					    test_server.py:3: test_send_http PASSED
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ===================== 1 tests deselected by "-m 'webtest'" =====================
 | 
					    =================== 1 tests deselected by "-m 'webtest'" ===================
 | 
				
			||||||
    ==================== 1 passed, 1 deselected in 0.01 seconds ====================
 | 
					    ================== 1 passed, 1 deselected in 0.01 seconds ==================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Or the inverse, running all tests except the webtest ones::
 | 
					Or the inverse, running all tests except the webtest ones::
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    $ py.test -v -m "not webtest"
 | 
					    $ py.test -v -m "not webtest"
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_server.py:6: test_something_quick PASSED
 | 
					    test_server.py:6: test_something_quick PASSED
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    =================== 1 tests deselected by "-m 'not webtest'" ===================
 | 
					    ================= 1 tests deselected by "-m 'not webtest'" =================
 | 
				
			||||||
    ==================== 1 passed, 1 deselected in 0.02 seconds ====================
 | 
					    ================== 1 passed, 1 deselected in 0.01 seconds ==================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Registering markers
 | 
					Registering markers
 | 
				
			||||||
-------------------------------------
 | 
					-------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -141,39 +141,39 @@ You can use the ``-k`` command line option to only run tests with names matching
 | 
				
			||||||
the given argument::
 | 
					the given argument::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -k send_http  # running with the above defined examples
 | 
					    $ py.test -k send_http  # running with the above defined examples
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 4 items
 | 
					    collecting ... collected 4 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_server.py .
 | 
					    test_server.py .
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ===================== 3 tests deselected by '-ksend_http' ======================
 | 
					    =================== 3 tests deselected by '-ksend_http' ====================
 | 
				
			||||||
    ==================== 1 passed, 3 deselected in 0.02 seconds ====================
 | 
					    ================== 1 passed, 3 deselected in 0.02 seconds ==================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
And you can also run all tests except the ones that match the keyword::
 | 
					And you can also run all tests except the ones that match the keyword::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -k-send_http
 | 
					    $ py.test -k-send_http
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 4 items
 | 
					    collecting ... collected 4 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_mark_classlevel.py ..
 | 
					    test_mark_classlevel.py ..
 | 
				
			||||||
    test_server.py .
 | 
					    test_server.py .
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ===================== 1 tests deselected by '-k-send_http' =====================
 | 
					    =================== 1 tests deselected by '-k-send_http' ===================
 | 
				
			||||||
    ==================== 3 passed, 1 deselected in 0.03 seconds ====================
 | 
					    ================== 3 passed, 1 deselected in 0.03 seconds ==================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Or to only select the class::
 | 
					Or to only select the class::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -kTestClass
 | 
					    $ py.test -kTestClass
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 4 items
 | 
					    collecting ... collected 4 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_mark_classlevel.py ..
 | 
					    test_mark_classlevel.py ..
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ===================== 2 tests deselected by '-kTestClass' ======================
 | 
					    =================== 2 tests deselected by '-kTestClass' ====================
 | 
				
			||||||
    ==================== 2 passed, 2 deselected in 0.02 seconds ====================
 | 
					    ================== 2 passed, 2 deselected in 0.02 seconds ==================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _`adding a custom marker from a plugin`:
 | 
					.. _`adding a custom marker from a plugin`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -221,24 +221,24 @@ and an example invocations specifying a different environment than what
 | 
				
			||||||
the test needs::
 | 
					the test needs::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -E stage2
 | 
					    $ py.test -E stage2
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_someenv.py s
 | 
					    test_someenv.py s
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ========================== 1 skipped in 0.02 seconds ===========================
 | 
					    ======================== 1 skipped in 0.02 seconds =========================
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
and here is one that specifies exactly the environment needed::
 | 
					and here is one that specifies exactly the environment needed::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -E stage1
 | 
					    $ py.test -E stage1
 | 
				
			||||||
    ============================= test session starts ==============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_someenv.py .
 | 
					    test_someenv.py .
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    =========================== 1 passed in 0.02 seconds ===========================
 | 
					    ========================= 1 passed in 0.01 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The ``--markers`` option always gives you a list of available markers::
 | 
					The ``--markers`` option always gives you a list of available markers::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,7 @@ You can now run the test::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_sample.py
 | 
					    $ py.test test_sample.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_sample.py F
 | 
					    test_sample.py F
 | 
				
			||||||
| 
						 | 
					@ -57,7 +57,7 @@ You can now run the test::
 | 
				
			||||||
    ================================= FAILURES =================================
 | 
					    ================================= FAILURES =================================
 | 
				
			||||||
    _______________________________ test_answer ________________________________
 | 
					    _______________________________ test_answer ________________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    mysetup = <conftest.MySetup instance at 0x1012b2bd8>
 | 
					    mysetup = <conftest.MySetup instance at 0x10131c098>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_answer(mysetup):
 | 
					        def test_answer(mysetup):
 | 
				
			||||||
            app = mysetup.myapp()
 | 
					            app = mysetup.myapp()
 | 
				
			||||||
| 
						 | 
					@ -122,12 +122,12 @@ Running it yields::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_ssh.py -rs
 | 
					    $ py.test test_ssh.py -rs
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_ssh.py s
 | 
					    test_ssh.py s
 | 
				
			||||||
    ========================= short test summary info ==========================
 | 
					    ========================= short test summary info ==========================
 | 
				
			||||||
    SKIP [1] /Users/hpk/tmp/doc-exec-625/conftest.py:22: specify ssh host with --ssh
 | 
					    SKIP [1] /Users/hpk/tmp/doc-exec-44/conftest.py:22: specify ssh host with --ssh
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ======================== 1 skipped in 0.02 seconds =========================
 | 
					    ======================== 1 skipped in 0.02 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ now execute the test specification::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    nonpython $ py.test test_simple.yml
 | 
					    nonpython $ py.test test_simple.yml
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_simple.yml .F
 | 
					    test_simple.yml .F
 | 
				
			||||||
| 
						 | 
					@ -37,7 +37,7 @@ now execute the test specification::
 | 
				
			||||||
    usecase execution failed
 | 
					    usecase execution failed
 | 
				
			||||||
       spec failed: 'some': 'other'
 | 
					       spec failed: 'some': 'other'
 | 
				
			||||||
       no further details known at this point.
 | 
					       no further details known at this point.
 | 
				
			||||||
    ==================== 1 failed, 1 passed in 0.10 seconds ====================
 | 
					    ==================== 1 failed, 1 passed in 0.09 seconds ====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You get one dot for the passing ``sub1: sub1`` check and one failure.
 | 
					You get one dot for the passing ``sub1: sub1`` check and one failure.
 | 
				
			||||||
Obviously in the above ``conftest.py`` you'll want to implement a more
 | 
					Obviously in the above ``conftest.py`` you'll want to implement a more
 | 
				
			||||||
| 
						 | 
					@ -56,7 +56,7 @@ consulted when reporting in ``verbose`` mode::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    nonpython $ py.test -v
 | 
					    nonpython $ py.test -v
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_simple.yml:1: usecase: ok PASSED
 | 
					    test_simple.yml:1: usecase: ok PASSED
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,7 @@ interesting to just look at the collection tree::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    nonpython $ py.test --collectonly
 | 
					    nonpython $ py.test --collectonly
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    <YamlFile 'test_simple.yml'>
 | 
					    <YamlFile 'test_simple.yml'>
 | 
				
			||||||
      <YamlItem 'ok'>
 | 
					      <YamlItem 'ok'>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -154,7 +154,7 @@ this is a fully self-contained example which you can run with::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_scenarios.py
 | 
					    $ py.test test_scenarios.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_scenarios.py ..
 | 
					    test_scenarios.py ..
 | 
				
			||||||
| 
						 | 
					@ -166,7 +166,7 @@ If you just collect tests you'll also nicely see 'advanced' and 'basic' as varia
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --collectonly test_scenarios.py
 | 
					    $ py.test --collectonly test_scenarios.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    <Module 'test_scenarios.py'>
 | 
					    <Module 'test_scenarios.py'>
 | 
				
			||||||
      <Class 'TestSampleWithScenarios'>
 | 
					      <Class 'TestSampleWithScenarios'>
 | 
				
			||||||
| 
						 | 
					@ -222,7 +222,7 @@ Let's first see how it looks like at collection time::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_backends.py --collectonly
 | 
					    $ py.test test_backends.py --collectonly
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    <Module 'test_backends.py'>
 | 
					    <Module 'test_backends.py'>
 | 
				
			||||||
      <Function 'test_db_initialized[d1]'>
 | 
					      <Function 'test_db_initialized[d1]'>
 | 
				
			||||||
| 
						 | 
					@ -238,7 +238,7 @@ And then when we run the test::
 | 
				
			||||||
    ================================= FAILURES =================================
 | 
					    ================================= FAILURES =================================
 | 
				
			||||||
    _________________________ test_db_initialized[d2] __________________________
 | 
					    _________________________ test_db_initialized[d2] __________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    db = <conftest.DB2 instance at 0x10150ab90>
 | 
					    db = <conftest.DB2 instance at 0x10131c6c8>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_db_initialized(db):
 | 
					        def test_db_initialized(db):
 | 
				
			||||||
            # a dummy test
 | 
					            # a dummy test
 | 
				
			||||||
| 
						 | 
					@ -295,7 +295,7 @@ argument sets to use for each test function.  Let's run it::
 | 
				
			||||||
    ================================= FAILURES =================================
 | 
					    ================================= FAILURES =================================
 | 
				
			||||||
    ________________________ TestClass.test_equals[1-2] ________________________
 | 
					    ________________________ TestClass.test_equals[1-2] ________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <test_parametrize.TestClass instance at 0x101509638>, a = 1, b = 2
 | 
					    self = <test_parametrize.TestClass instance at 0x101320200>, a = 1, b = 2
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_equals(self, a, b):
 | 
					        def test_equals(self, a, b):
 | 
				
			||||||
    >       assert a == b
 | 
					    >       assert a == b
 | 
				
			||||||
| 
						 | 
					@ -326,4 +326,4 @@ Running it results in some skips if we don't have all the python interpreters in
 | 
				
			||||||
   ========================= short test summary info ==========================
 | 
					   ========================= short test summary info ==========================
 | 
				
			||||||
   SKIP [24] /Users/hpk/p/pytest/doc/example/multipython.py:36: 'python2.8' not found
 | 
					   SKIP [24] /Users/hpk/p/pytest/doc/example/multipython.py:36: 'python2.8' not found
 | 
				
			||||||
   SKIP [24] /Users/hpk/p/pytest/doc/example/multipython.py:36: 'python2.4' not found
 | 
					   SKIP [24] /Users/hpk/p/pytest/doc/example/multipython.py:36: 'python2.4' not found
 | 
				
			||||||
   27 passed, 48 skipped in 3.03 seconds
 | 
					   27 passed, 48 skipped in 3.01 seconds
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ then the test collection looks like this::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --collectonly
 | 
					    $ py.test --collectonly
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    <Module 'check_myapp.py'>
 | 
					    <Module 'check_myapp.py'>
 | 
				
			||||||
      <Class 'CheckMyApp'>
 | 
					      <Class 'CheckMyApp'>
 | 
				
			||||||
| 
						 | 
					@ -51,7 +51,7 @@ then the test collection looks like this::
 | 
				
			||||||
          <Function 'check_simple'>
 | 
					          <Function 'check_simple'>
 | 
				
			||||||
          <Function 'check_complex'>
 | 
					          <Function 'check_complex'>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    =============================  in 0.02 seconds =============================
 | 
					    =============================  in 0.01 seconds =============================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Interpreting cmdline arguments as Python packages
 | 
					Interpreting cmdline arguments as Python packages
 | 
				
			||||||
-----------------------------------------------------
 | 
					-----------------------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -82,7 +82,7 @@ You can always peek at the collection tree without running tests like this::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    . $ py.test --collectonly pythoncollection.py
 | 
					    . $ py.test --collectonly pythoncollection.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 3 items
 | 
					    collecting ... collected 3 items
 | 
				
			||||||
    <Module 'pythoncollection.py'>
 | 
					    <Module 'pythoncollection.py'>
 | 
				
			||||||
      <Function 'test_function'>
 | 
					      <Function 'test_function'>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assertion $ py.test failure_demo.py
 | 
					    assertion $ py.test failure_demo.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 39 items
 | 
					    collecting ... collected 39 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
 | 
					    failure_demo.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
 | 
				
			||||||
| 
						 | 
					@ -30,7 +30,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:15: AssertionError
 | 
					    failure_demo.py:15: AssertionError
 | 
				
			||||||
    _________________________ TestFailing.test_simple __________________________
 | 
					    _________________________ TestFailing.test_simple __________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestFailing object at 0x1013552d0>
 | 
					    self = <failure_demo.TestFailing object at 0x101356250>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_simple(self):
 | 
					        def test_simple(self):
 | 
				
			||||||
            def f():
 | 
					            def f():
 | 
				
			||||||
| 
						 | 
					@ -40,13 +40,13 @@ get on the terminal - we are working on that):
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    >       assert f() == g()
 | 
					    >       assert f() == g()
 | 
				
			||||||
    E       assert 42 == 43
 | 
					    E       assert 42 == 43
 | 
				
			||||||
    E        +  where 42 = <function f at 0x101514f50>()
 | 
					    E        +  where 42 = <function f at 0x101328848>()
 | 
				
			||||||
    E        +  and   43 = <function g at 0x101516050>()
 | 
					    E        +  and   43 = <function g at 0x1013288c0>()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:28: AssertionError
 | 
					    failure_demo.py:28: AssertionError
 | 
				
			||||||
    ____________________ TestFailing.test_simple_multiline _____________________
 | 
					    ____________________ TestFailing.test_simple_multiline _____________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestFailing object at 0x101355950>
 | 
					    self = <failure_demo.TestFailing object at 0x101356810>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_simple_multiline(self):
 | 
					        def test_simple_multiline(self):
 | 
				
			||||||
            otherfunc_multi(
 | 
					            otherfunc_multi(
 | 
				
			||||||
| 
						 | 
					@ -66,19 +66,19 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:11: AssertionError
 | 
					    failure_demo.py:11: AssertionError
 | 
				
			||||||
    ___________________________ TestFailing.test_not ___________________________
 | 
					    ___________________________ TestFailing.test_not ___________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestFailing object at 0x101355ad0>
 | 
					    self = <failure_demo.TestFailing object at 0x101356a10>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_not(self):
 | 
					        def test_not(self):
 | 
				
			||||||
            def f():
 | 
					            def f():
 | 
				
			||||||
                return 42
 | 
					                return 42
 | 
				
			||||||
    >       assert not f()
 | 
					    >       assert not f()
 | 
				
			||||||
    E       assert not 42
 | 
					    E       assert not 42
 | 
				
			||||||
    E        +  where 42 = <function f at 0x101514f50>()
 | 
					    E        +  where 42 = <function f at 0x101328758>()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:38: AssertionError
 | 
					    failure_demo.py:38: AssertionError
 | 
				
			||||||
    _________________ TestSpecialisedExplanations.test_eq_text _________________
 | 
					    _________________ TestSpecialisedExplanations.test_eq_text _________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x1013559d0>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101356c50>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_text(self):
 | 
					        def test_eq_text(self):
 | 
				
			||||||
    >       assert 'spam' == 'eggs'
 | 
					    >       assert 'spam' == 'eggs'
 | 
				
			||||||
| 
						 | 
					@ -89,7 +89,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:42: AssertionError
 | 
					    failure_demo.py:42: AssertionError
 | 
				
			||||||
    _____________ TestSpecialisedExplanations.test_eq_similar_text _____________
 | 
					    _____________ TestSpecialisedExplanations.test_eq_similar_text _____________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x101350dd0>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x1013542d0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_similar_text(self):
 | 
					        def test_eq_similar_text(self):
 | 
				
			||||||
    >       assert 'foo 1 bar' == 'foo 2 bar'
 | 
					    >       assert 'foo 1 bar' == 'foo 2 bar'
 | 
				
			||||||
| 
						 | 
					@ -102,7 +102,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:45: AssertionError
 | 
					    failure_demo.py:45: AssertionError
 | 
				
			||||||
    ____________ TestSpecialisedExplanations.test_eq_multiline_text ____________
 | 
					    ____________ TestSpecialisedExplanations.test_eq_multiline_text ____________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x101350d10>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101354590>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_multiline_text(self):
 | 
					        def test_eq_multiline_text(self):
 | 
				
			||||||
    >       assert 'foo\nspam\nbar' == 'foo\neggs\nbar'
 | 
					    >       assert 'foo\nspam\nbar' == 'foo\neggs\nbar'
 | 
				
			||||||
| 
						 | 
					@ -115,7 +115,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:48: AssertionError
 | 
					    failure_demo.py:48: AssertionError
 | 
				
			||||||
    ______________ TestSpecialisedExplanations.test_eq_long_text _______________
 | 
					    ______________ TestSpecialisedExplanations.test_eq_long_text _______________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x101350cd0>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101354710>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_long_text(self):
 | 
					        def test_eq_long_text(self):
 | 
				
			||||||
            a = '1'*100 + 'a' + '2'*100
 | 
					            a = '1'*100 + 'a' + '2'*100
 | 
				
			||||||
| 
						 | 
					@ -132,7 +132,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:53: AssertionError
 | 
					    failure_demo.py:53: AssertionError
 | 
				
			||||||
    _________ TestSpecialisedExplanations.test_eq_long_text_multiline __________
 | 
					    _________ TestSpecialisedExplanations.test_eq_long_text_multiline __________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x101350f50>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x1013529d0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_long_text_multiline(self):
 | 
					        def test_eq_long_text_multiline(self):
 | 
				
			||||||
            a = '1\n'*100 + 'a' + '2\n'*100
 | 
					            a = '1\n'*100 + 'a' + '2\n'*100
 | 
				
			||||||
| 
						 | 
					@ -156,7 +156,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:58: AssertionError
 | 
					    failure_demo.py:58: AssertionError
 | 
				
			||||||
    _________________ TestSpecialisedExplanations.test_eq_list _________________
 | 
					    _________________ TestSpecialisedExplanations.test_eq_list _________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f350>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101352750>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_list(self):
 | 
					        def test_eq_list(self):
 | 
				
			||||||
    >       assert [0, 1, 2] == [0, 1, 3]
 | 
					    >       assert [0, 1, 2] == [0, 1, 3]
 | 
				
			||||||
| 
						 | 
					@ -166,7 +166,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:61: AssertionError
 | 
					    failure_demo.py:61: AssertionError
 | 
				
			||||||
    ______________ TestSpecialisedExplanations.test_eq_list_long _______________
 | 
					    ______________ TestSpecialisedExplanations.test_eq_list_long _______________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10134fc10>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101352ad0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_list_long(self):
 | 
					        def test_eq_list_long(self):
 | 
				
			||||||
            a = [0]*100 + [1] + [3]*100
 | 
					            a = [0]*100 + [1] + [3]*100
 | 
				
			||||||
| 
						 | 
					@ -178,7 +178,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:66: AssertionError
 | 
					    failure_demo.py:66: AssertionError
 | 
				
			||||||
    _________________ TestSpecialisedExplanations.test_eq_dict _________________
 | 
					    _________________ TestSpecialisedExplanations.test_eq_dict _________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f2d0>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101352b90>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_dict(self):
 | 
					        def test_eq_dict(self):
 | 
				
			||||||
    >       assert {'a': 0, 'b': 1} == {'a': 0, 'b': 2}
 | 
					    >       assert {'a': 0, 'b': 1} == {'a': 0, 'b': 2}
 | 
				
			||||||
| 
						 | 
					@ -191,7 +191,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:69: AssertionError
 | 
					    failure_demo.py:69: AssertionError
 | 
				
			||||||
    _________________ TestSpecialisedExplanations.test_eq_set __________________
 | 
					    _________________ TestSpecialisedExplanations.test_eq_set __________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f110>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101352fd0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_set(self):
 | 
					        def test_eq_set(self):
 | 
				
			||||||
    >       assert set([0, 10, 11, 12]) == set([0, 20, 21])
 | 
					    >       assert set([0, 10, 11, 12]) == set([0, 20, 21])
 | 
				
			||||||
| 
						 | 
					@ -207,7 +207,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:72: AssertionError
 | 
					    failure_demo.py:72: AssertionError
 | 
				
			||||||
    _____________ TestSpecialisedExplanations.test_eq_longer_list ______________
 | 
					    _____________ TestSpecialisedExplanations.test_eq_longer_list ______________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f510>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101352b50>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_eq_longer_list(self):
 | 
					        def test_eq_longer_list(self):
 | 
				
			||||||
    >       assert [1,2] == [1,2,3]
 | 
					    >       assert [1,2] == [1,2,3]
 | 
				
			||||||
| 
						 | 
					@ -217,7 +217,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:75: AssertionError
 | 
					    failure_demo.py:75: AssertionError
 | 
				
			||||||
    _________________ TestSpecialisedExplanations.test_in_list _________________
 | 
					    _________________ TestSpecialisedExplanations.test_in_list _________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10134f6d0>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x1013522d0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_in_list(self):
 | 
					        def test_in_list(self):
 | 
				
			||||||
    >       assert 1 in [0, 2, 3, 4, 5]
 | 
					    >       assert 1 in [0, 2, 3, 4, 5]
 | 
				
			||||||
| 
						 | 
					@ -226,7 +226,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:78: AssertionError
 | 
					    failure_demo.py:78: AssertionError
 | 
				
			||||||
    __________ TestSpecialisedExplanations.test_not_in_text_multiline __________
 | 
					    __________ TestSpecialisedExplanations.test_not_in_text_multiline __________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10152c490>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101351390>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_not_in_text_multiline(self):
 | 
					        def test_not_in_text_multiline(self):
 | 
				
			||||||
            text = 'some multiline\ntext\nwhich\nincludes foo\nand a\ntail'
 | 
					            text = 'some multiline\ntext\nwhich\nincludes foo\nand a\ntail'
 | 
				
			||||||
| 
						 | 
					@ -244,7 +244,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:82: AssertionError
 | 
					    failure_demo.py:82: AssertionError
 | 
				
			||||||
    ___________ TestSpecialisedExplanations.test_not_in_text_single ____________
 | 
					    ___________ TestSpecialisedExplanations.test_not_in_text_single ____________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10152cfd0>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101351410>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_not_in_text_single(self):
 | 
					        def test_not_in_text_single(self):
 | 
				
			||||||
            text = 'single foo line'
 | 
					            text = 'single foo line'
 | 
				
			||||||
| 
						 | 
					@ -257,7 +257,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:86: AssertionError
 | 
					    failure_demo.py:86: AssertionError
 | 
				
			||||||
    _________ TestSpecialisedExplanations.test_not_in_text_single_long _________
 | 
					    _________ TestSpecialisedExplanations.test_not_in_text_single_long _________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10152c090>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101351510>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_not_in_text_single_long(self):
 | 
					        def test_not_in_text_single_long(self):
 | 
				
			||||||
            text = 'head ' * 50 + 'foo ' + 'tail ' * 20
 | 
					            text = 'head ' * 50 + 'foo ' + 'tail ' * 20
 | 
				
			||||||
| 
						 | 
					@ -270,7 +270,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:90: AssertionError
 | 
					    failure_demo.py:90: AssertionError
 | 
				
			||||||
    ______ TestSpecialisedExplanations.test_not_in_text_single_long_term _______
 | 
					    ______ TestSpecialisedExplanations.test_not_in_text_single_long_term _______
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestSpecialisedExplanations object at 0x10152cb90>
 | 
					    self = <failure_demo.TestSpecialisedExplanations object at 0x101351a10>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_not_in_text_single_long_term(self):
 | 
					        def test_not_in_text_single_long_term(self):
 | 
				
			||||||
            text = 'head ' * 50 + 'f'*70 + 'tail ' * 20
 | 
					            text = 'head ' * 50 + 'f'*70 + 'tail ' * 20
 | 
				
			||||||
| 
						 | 
					@ -289,7 +289,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
            i = Foo()
 | 
					            i = Foo()
 | 
				
			||||||
    >       assert i.b == 2
 | 
					    >       assert i.b == 2
 | 
				
			||||||
    E       assert 1 == 2
 | 
					    E       assert 1 == 2
 | 
				
			||||||
    E        +  where 1 = <failure_demo.Foo object at 0x10152c350>.b
 | 
					    E        +  where 1 = <failure_demo.Foo object at 0x101351b50>.b
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:101: AssertionError
 | 
					    failure_demo.py:101: AssertionError
 | 
				
			||||||
    _________________________ test_attribute_instance __________________________
 | 
					    _________________________ test_attribute_instance __________________________
 | 
				
			||||||
| 
						 | 
					@ -299,8 +299,8 @@ get on the terminal - we are working on that):
 | 
				
			||||||
                b = 1
 | 
					                b = 1
 | 
				
			||||||
    >       assert Foo().b == 2
 | 
					    >       assert Foo().b == 2
 | 
				
			||||||
    E       assert 1 == 2
 | 
					    E       assert 1 == 2
 | 
				
			||||||
    E        +  where 1 = <failure_demo.Foo object at 0x10134fe90>.b
 | 
					    E        +  where 1 = <failure_demo.Foo object at 0x101351810>.b
 | 
				
			||||||
    E        +    where <failure_demo.Foo object at 0x10134fe90> = <class 'failure_demo.Foo'>()
 | 
					    E        +    where <failure_demo.Foo object at 0x101351810> = <class 'failure_demo.Foo'>()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:107: AssertionError
 | 
					    failure_demo.py:107: AssertionError
 | 
				
			||||||
    __________________________ test_attribute_failure __________________________
 | 
					    __________________________ test_attribute_failure __________________________
 | 
				
			||||||
| 
						 | 
					@ -316,7 +316,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:116: 
 | 
					    failure_demo.py:116: 
 | 
				
			||||||
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
 | 
					    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.Foo object at 0x10152c610>
 | 
					    self = <failure_demo.Foo object at 0x101351c50>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def _get_b(self):
 | 
					        def _get_b(self):
 | 
				
			||||||
    >       raise Exception('Failed to get attrib')
 | 
					    >       raise Exception('Failed to get attrib')
 | 
				
			||||||
| 
						 | 
					@ -332,15 +332,15 @@ get on the terminal - we are working on that):
 | 
				
			||||||
                b = 2
 | 
					                b = 2
 | 
				
			||||||
    >       assert Foo().b == Bar().b
 | 
					    >       assert Foo().b == Bar().b
 | 
				
			||||||
    E       assert 1 == 2
 | 
					    E       assert 1 == 2
 | 
				
			||||||
    E        +  where 1 = <failure_demo.Foo object at 0x10152c950>.b
 | 
					    E        +  where 1 = <failure_demo.Foo object at 0x101351f10>.b
 | 
				
			||||||
    E        +    where <failure_demo.Foo object at 0x10152c950> = <class 'failure_demo.Foo'>()
 | 
					    E        +    where <failure_demo.Foo object at 0x101351f10> = <class 'failure_demo.Foo'>()
 | 
				
			||||||
    E        +  and   2 = <failure_demo.Bar object at 0x10152c250>.b
 | 
					    E        +  and   2 = <failure_demo.Bar object at 0x1013519d0>.b
 | 
				
			||||||
    E        +    where <failure_demo.Bar object at 0x10152c250> = <class 'failure_demo.Bar'>()
 | 
					    E        +    where <failure_demo.Bar object at 0x1013519d0> = <class 'failure_demo.Bar'>()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:124: AssertionError
 | 
					    failure_demo.py:124: AssertionError
 | 
				
			||||||
    __________________________ TestRaises.test_raises __________________________
 | 
					    __________________________ TestRaises.test_raises __________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestRaises instance at 0x1015219e0>
 | 
					    self = <failure_demo.TestRaises instance at 0x101373710>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_raises(self):
 | 
					        def test_raises(self):
 | 
				
			||||||
            s = 'qwe'
 | 
					            s = 'qwe'
 | 
				
			||||||
| 
						 | 
					@ -352,10 +352,10 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    >   int(s)
 | 
					    >   int(s)
 | 
				
			||||||
    E   ValueError: invalid literal for int() with base 10: 'qwe'
 | 
					    E   ValueError: invalid literal for int() with base 10: 'qwe'
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    <0-codegen /Users/hpk/p/pytest/_pytest/python.py:957>:1: ValueError
 | 
					    <0-codegen /Users/hpk/p/pytest/_pytest/python.py:958>:1: ValueError
 | 
				
			||||||
    ______________________ TestRaises.test_raises_doesnt _______________________
 | 
					    ______________________ TestRaises.test_raises_doesnt _______________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestRaises instance at 0x1013794d0>
 | 
					    self = <failure_demo.TestRaises instance at 0x101334f38>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_raises_doesnt(self):
 | 
					        def test_raises_doesnt(self):
 | 
				
			||||||
    >       raises(IOError, "int('3')")
 | 
					    >       raises(IOError, "int('3')")
 | 
				
			||||||
| 
						 | 
					@ -364,7 +364,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:136: Failed
 | 
					    failure_demo.py:136: Failed
 | 
				
			||||||
    __________________________ TestRaises.test_raise ___________________________
 | 
					    __________________________ TestRaises.test_raise ___________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestRaises instance at 0x10151f6c8>
 | 
					    self = <failure_demo.TestRaises instance at 0x10136d950>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_raise(self):
 | 
					        def test_raise(self):
 | 
				
			||||||
    >       raise ValueError("demo error")
 | 
					    >       raise ValueError("demo error")
 | 
				
			||||||
| 
						 | 
					@ -373,7 +373,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:139: ValueError
 | 
					    failure_demo.py:139: ValueError
 | 
				
			||||||
    ________________________ TestRaises.test_tupleerror ________________________
 | 
					    ________________________ TestRaises.test_tupleerror ________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestRaises instance at 0x1013733f8>
 | 
					    self = <failure_demo.TestRaises instance at 0x101367758>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_tupleerror(self):
 | 
					        def test_tupleerror(self):
 | 
				
			||||||
    >       a,b = [1]
 | 
					    >       a,b = [1]
 | 
				
			||||||
| 
						 | 
					@ -382,7 +382,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:142: ValueError
 | 
					    failure_demo.py:142: ValueError
 | 
				
			||||||
    ______ TestRaises.test_reinterpret_fails_with_print_for_the_fun_of_it ______
 | 
					    ______ TestRaises.test_reinterpret_fails_with_print_for_the_fun_of_it ______
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestRaises instance at 0x10136e170>
 | 
					    self = <failure_demo.TestRaises instance at 0x10136a4d0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_reinterpret_fails_with_print_for_the_fun_of_it(self):
 | 
					        def test_reinterpret_fails_with_print_for_the_fun_of_it(self):
 | 
				
			||||||
            l = [1,2,3]
 | 
					            l = [1,2,3]
 | 
				
			||||||
| 
						 | 
					@ -395,7 +395,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    l is [1, 2, 3]
 | 
					    l is [1, 2, 3]
 | 
				
			||||||
    ________________________ TestRaises.test_some_error ________________________
 | 
					    ________________________ TestRaises.test_some_error ________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestRaises instance at 0x10136ef38>
 | 
					    self = <failure_demo.TestRaises instance at 0x1013692d8>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_some_error(self):
 | 
					        def test_some_error(self):
 | 
				
			||||||
    >       if namenotexi:
 | 
					    >       if namenotexi:
 | 
				
			||||||
| 
						 | 
					@ -423,7 +423,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    <2-codegen 'abc-123' /Users/hpk/p/pytest/doc/example/assertion/failure_demo.py:162>:2: AssertionError
 | 
					    <2-codegen 'abc-123' /Users/hpk/p/pytest/doc/example/assertion/failure_demo.py:162>:2: AssertionError
 | 
				
			||||||
    ____________________ TestMoreErrors.test_complex_error _____________________
 | 
					    ____________________ TestMoreErrors.test_complex_error _____________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x101520638>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x1013730e0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_complex_error(self):
 | 
					        def test_complex_error(self):
 | 
				
			||||||
            def f():
 | 
					            def f():
 | 
				
			||||||
| 
						 | 
					@ -452,7 +452,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:5: AssertionError
 | 
					    failure_demo.py:5: AssertionError
 | 
				
			||||||
    ___________________ TestMoreErrors.test_z1_unpack_error ____________________
 | 
					    ___________________ TestMoreErrors.test_z1_unpack_error ____________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x10136bcb0>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x101368290>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_z1_unpack_error(self):
 | 
					        def test_z1_unpack_error(self):
 | 
				
			||||||
            l = []
 | 
					            l = []
 | 
				
			||||||
| 
						 | 
					@ -462,7 +462,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:179: ValueError
 | 
					    failure_demo.py:179: ValueError
 | 
				
			||||||
    ____________________ TestMoreErrors.test_z2_type_error _____________________
 | 
					    ____________________ TestMoreErrors.test_z2_type_error _____________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x10136a440>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x1013610e0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_z2_type_error(self):
 | 
					        def test_z2_type_error(self):
 | 
				
			||||||
            l = 3
 | 
					            l = 3
 | 
				
			||||||
| 
						 | 
					@ -472,19 +472,19 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:183: TypeError
 | 
					    failure_demo.py:183: TypeError
 | 
				
			||||||
    ______________________ TestMoreErrors.test_startswith ______________________
 | 
					    ______________________ TestMoreErrors.test_startswith ______________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x101368290>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x101361ea8>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_startswith(self):
 | 
					        def test_startswith(self):
 | 
				
			||||||
            s = "123"
 | 
					            s = "123"
 | 
				
			||||||
            g = "456"
 | 
					            g = "456"
 | 
				
			||||||
    >       assert s.startswith(g)
 | 
					    >       assert s.startswith(g)
 | 
				
			||||||
    E       assert <built-in method startswith of str object at 0x101354030>('456')
 | 
					    E       assert <built-in method startswith of str object at 0x101357a58>('456')
 | 
				
			||||||
    E        +  where <built-in method startswith of str object at 0x101354030> = '123'.startswith
 | 
					    E        +  where <built-in method startswith of str object at 0x101357a58> = '123'.startswith
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:188: AssertionError
 | 
					    failure_demo.py:188: AssertionError
 | 
				
			||||||
    __________________ TestMoreErrors.test_startswith_nested ___________________
 | 
					    __________________ TestMoreErrors.test_startswith_nested ___________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x101368f38>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x101368128>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_startswith_nested(self):
 | 
					        def test_startswith_nested(self):
 | 
				
			||||||
            def f():
 | 
					            def f():
 | 
				
			||||||
| 
						 | 
					@ -492,15 +492,15 @@ get on the terminal - we are working on that):
 | 
				
			||||||
            def g():
 | 
					            def g():
 | 
				
			||||||
                return "456"
 | 
					                return "456"
 | 
				
			||||||
    >       assert f().startswith(g())
 | 
					    >       assert f().startswith(g())
 | 
				
			||||||
    E       assert <built-in method startswith of str object at 0x101354030>('456')
 | 
					    E       assert <built-in method startswith of str object at 0x101357a58>('456')
 | 
				
			||||||
    E        +  where <built-in method startswith of str object at 0x101354030> = '123'.startswith
 | 
					    E        +  where <built-in method startswith of str object at 0x101357a58> = '123'.startswith
 | 
				
			||||||
    E        +    where '123' = <function f at 0x10136c578>()
 | 
					    E        +    where '123' = <function f at 0x101339938>()
 | 
				
			||||||
    E        +  and   '456' = <function g at 0x10136c5f0>()
 | 
					    E        +  and   '456' = <function g at 0x101339cf8>()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:195: AssertionError
 | 
					    failure_demo.py:195: AssertionError
 | 
				
			||||||
    _____________________ TestMoreErrors.test_global_func ______________________
 | 
					    _____________________ TestMoreErrors.test_global_func ______________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x10136aef0>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x101336758>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_global_func(self):
 | 
					        def test_global_func(self):
 | 
				
			||||||
    >       assert isinstance(globf(42), float)
 | 
					    >       assert isinstance(globf(42), float)
 | 
				
			||||||
| 
						 | 
					@ -510,18 +510,18 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:198: AssertionError
 | 
					    failure_demo.py:198: AssertionError
 | 
				
			||||||
    _______________________ TestMoreErrors.test_instance _______________________
 | 
					    _______________________ TestMoreErrors.test_instance _______________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x10151c440>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x1013678c0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_instance(self):
 | 
					        def test_instance(self):
 | 
				
			||||||
            self.x = 6*7
 | 
					            self.x = 6*7
 | 
				
			||||||
    >       assert self.x != 42
 | 
					    >       assert self.x != 42
 | 
				
			||||||
    E       assert 42 != 42
 | 
					    E       assert 42 != 42
 | 
				
			||||||
    E        +  where 42 = <failure_demo.TestMoreErrors instance at 0x10151c440>.x
 | 
					    E        +  where 42 = <failure_demo.TestMoreErrors instance at 0x1013678c0>.x
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    failure_demo.py:202: AssertionError
 | 
					    failure_demo.py:202: AssertionError
 | 
				
			||||||
    _______________________ TestMoreErrors.test_compare ________________________
 | 
					    _______________________ TestMoreErrors.test_compare ________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x101373a70>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x101366a28>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_compare(self):
 | 
					        def test_compare(self):
 | 
				
			||||||
    >       assert globf(10) < 5
 | 
					    >       assert globf(10) < 5
 | 
				
			||||||
| 
						 | 
					@ -531,7 +531,7 @@ get on the terminal - we are working on that):
 | 
				
			||||||
    failure_demo.py:205: AssertionError
 | 
					    failure_demo.py:205: AssertionError
 | 
				
			||||||
    _____________________ TestMoreErrors.test_try_finally ______________________
 | 
					    _____________________ TestMoreErrors.test_try_finally ______________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <failure_demo.TestMoreErrors instance at 0x101363c68>
 | 
					    self = <failure_demo.TestMoreErrors instance at 0x1013628c0>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_try_finally(self):
 | 
					        def test_try_finally(self):
 | 
				
			||||||
            x = 1
 | 
					            x = 1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,13 +109,13 @@ directory with the above conftest.py::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test
 | 
					    $ py.test
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    gw0 I
 | 
					    gw0 I
 | 
				
			||||||
    gw0 [0]
 | 
					    gw0 [0]
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    scheduling tests via LoadScheduling
 | 
					    scheduling tests via LoadScheduling
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    =============================  in 0.71 seconds =============================
 | 
					    =============================  in 0.54 seconds =============================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _`excontrolskip`:
 | 
					.. _`excontrolskip`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -156,12 +156,12 @@ and when running it will see a skipped "slow" test::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -rs    # "-rs" means report details on the little 's'
 | 
					    $ py.test -rs    # "-rs" means report details on the little 's'
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_module.py .s
 | 
					    test_module.py .s
 | 
				
			||||||
    ========================= short test summary info ==========================
 | 
					    ========================= short test summary info ==========================
 | 
				
			||||||
    SKIP [1] /Users/hpk/tmp/doc-exec-630/conftest.py:9: need --runslow option to run
 | 
					    SKIP [1] /Users/hpk/tmp/doc-exec-49/conftest.py:9: need --runslow option to run
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    =================== 1 passed, 1 skipped in 0.02 seconds ====================
 | 
					    =================== 1 passed, 1 skipped in 0.02 seconds ====================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -169,12 +169,12 @@ Or run it including the ``slow`` marked test::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --runslow
 | 
					    $ py.test --runslow
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 2 items
 | 
					    collecting ... collected 2 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_module.py ..
 | 
					    test_module.py ..
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ========================= 2 passed in 0.62 seconds =========================
 | 
					    ========================= 2 passed in 0.02 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Writing well integrated assertion helpers
 | 
					Writing well integrated assertion helpers
 | 
				
			||||||
--------------------------------------------------
 | 
					--------------------------------------------------
 | 
				
			||||||
| 
						 | 
					@ -261,7 +261,7 @@ which will add the string to the test header accordingly::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test
 | 
					    $ py.test
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    project deps: mylib-1.1
 | 
					    project deps: mylib-1.1
 | 
				
			||||||
    collecting ... collected 0 items
 | 
					    collecting ... collected 0 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -284,7 +284,7 @@ which will add info only when run with "--v"::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -v
 | 
					    $ py.test -v
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
 | 
				
			||||||
    info1: did you know that ...
 | 
					    info1: did you know that ...
 | 
				
			||||||
    did you?
 | 
					    did you?
 | 
				
			||||||
    collecting ... collected 0 items
 | 
					    collecting ... collected 0 items
 | 
				
			||||||
| 
						 | 
					@ -295,7 +295,7 @@ and nothing when run plainly::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test
 | 
					    $ py.test
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 0 items
 | 
					    collecting ... collected 0 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    =============================  in 0.00 seconds =============================
 | 
					    =============================  in 0.00 seconds =============================
 | 
				
			||||||
| 
						 | 
					@ -327,7 +327,7 @@ Now we can profile which test functions execute the slowest::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --durations=3
 | 
					    $ py.test --durations=3
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 3 items
 | 
					    collecting ... collected 3 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_some_are_slow.py ...
 | 
					    test_some_are_slow.py ...
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ Running the test looks like this::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_simplefactory.py
 | 
					    $ py.test test_simplefactory.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_simplefactory.py F
 | 
					    test_simplefactory.py F
 | 
				
			||||||
| 
						 | 
					@ -77,7 +77,7 @@ Running the test looks like this::
 | 
				
			||||||
    E       assert 42 == 17
 | 
					    E       assert 42 == 17
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_simplefactory.py:5: AssertionError
 | 
					    test_simplefactory.py:5: AssertionError
 | 
				
			||||||
    ========================= 1 failed in 0.03 seconds =========================
 | 
					    ========================= 1 failed in 0.02 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This means that indeed the test function was called with a ``myfuncarg``
 | 
					This means that indeed the test function was called with a ``myfuncarg``
 | 
				
			||||||
argument value of ``42`` and the assert fails.  Here is how py.test
 | 
					argument value of ``42`` and the assert fails.  Here is how py.test
 | 
				
			||||||
| 
						 | 
					@ -167,7 +167,7 @@ Running this will generate ten invocations of ``test_func`` passing in each of t
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_example.py
 | 
					    $ py.test test_example.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 10 items
 | 
					    collecting ... collected 10 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_example.py .........F
 | 
					    test_example.py .........F
 | 
				
			||||||
| 
						 | 
					@ -190,7 +190,7 @@ Let's just look at what is collected::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --collectonly test_example.py
 | 
					    $ py.test --collectonly test_example.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 10 items
 | 
					    collecting ... collected 10 items
 | 
				
			||||||
    <Module 'test_example.py'>
 | 
					    <Module 'test_example.py'>
 | 
				
			||||||
      <Function 'test_func[0]'>
 | 
					      <Function 'test_func[0]'>
 | 
				
			||||||
| 
						 | 
					@ -210,7 +210,7 @@ If you want to select only the run with the value ``7`` you could do::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test -v -k 7 test_example.py  # or -k test_func[7]
 | 
					    $ py.test -v -k 7 test_example.py  # or -k test_func[7]
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0 -- /Users/hpk/venv/1/bin/python
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1 -- /Users/hpk/venv/1/bin/python
 | 
				
			||||||
    collecting ... collected 10 items
 | 
					    collecting ... collected 10 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_example.py:5: test_func[7] PASSED
 | 
					    test_example.py:5: test_func[7] PASSED
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,9 +22,9 @@ Installation options::
 | 
				
			||||||
To check your installation has installed the correct version::
 | 
					To check your installation has installed the correct version::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test --version
 | 
					    $ py.test --version
 | 
				
			||||||
    This is py.test version 2.2.0, imported from /Users/hpk/p/pytest/pytest.pyc
 | 
					    This is py.test version 2.2.1, imported from /Users/hpk/p/pytest/pytest.pyc
 | 
				
			||||||
    setuptools registered plugins:
 | 
					    setuptools registered plugins:
 | 
				
			||||||
      pytest-xdist-1.7.dev1 at /Users/hpk/p/pytest-xdist/xdist/plugin.pyc
 | 
					      pytest-xdist-1.8.dev2 at /Users/hpk/p/pytest-xdist/xdist/plugin.pyc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you get an error checkout :ref:`installation issues`.
 | 
					If you get an error checkout :ref:`installation issues`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,7 @@ That's it. You can execute the test function now::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test
 | 
					    $ py.test
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_sample.py F
 | 
					    test_sample.py F
 | 
				
			||||||
| 
						 | 
					@ -60,7 +60,7 @@ That's it. You can execute the test function now::
 | 
				
			||||||
    E        +  where 4 = func(3)
 | 
					    E        +  where 4 = func(3)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_sample.py:5: AssertionError
 | 
					    test_sample.py:5: AssertionError
 | 
				
			||||||
    ========================= 1 failed in 0.04 seconds =========================
 | 
					    ========================= 1 failed in 0.02 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
py.test found the ``test_answer`` function by following :ref:`standard test discovery rules <test discovery>`, basically detecting the ``test_`` prefixes.  We got a failure report because our little ``func(3)`` call did not return ``5``.
 | 
					py.test found the ``test_answer`` function by following :ref:`standard test discovery rules <test discovery>`, basically detecting the ``test_`` prefixes.  We got a failure report because our little ``func(3)`` call did not return ``5``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,7 +126,7 @@ run the module by passing its filename::
 | 
				
			||||||
    ================================= FAILURES =================================
 | 
					    ================================= FAILURES =================================
 | 
				
			||||||
    ____________________________ TestClass.test_two ____________________________
 | 
					    ____________________________ TestClass.test_two ____________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    self = <test_class.TestClass instance at 0x10150a170>
 | 
					    self = <test_class.TestClass instance at 0x10131a560>
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_two(self):
 | 
					        def test_two(self):
 | 
				
			||||||
            x = "hello"
 | 
					            x = "hello"
 | 
				
			||||||
| 
						 | 
					@ -163,7 +163,7 @@ before performing the test function call.  Let's just run it::
 | 
				
			||||||
    ================================= FAILURES =================================
 | 
					    ================================= FAILURES =================================
 | 
				
			||||||
    _____________________________ test_needsfiles ______________________________
 | 
					    _____________________________ test_needsfiles ______________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    tmpdir = local('/Users/hpk/tmp/pytest-1595/test_needsfiles0')
 | 
					    tmpdir = local('/Users/hpk/tmp/pytest-679/test_needsfiles0')
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_needsfiles(tmpdir):
 | 
					        def test_needsfiles(tmpdir):
 | 
				
			||||||
            print tmpdir
 | 
					            print tmpdir
 | 
				
			||||||
| 
						 | 
					@ -172,8 +172,8 @@ before performing the test function call.  Let's just run it::
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_tmpdir.py:3: AssertionError
 | 
					    test_tmpdir.py:3: AssertionError
 | 
				
			||||||
    ----------------------------- Captured stdout ------------------------------
 | 
					    ----------------------------- Captured stdout ------------------------------
 | 
				
			||||||
    /Users/hpk/tmp/pytest-1595/test_needsfiles0
 | 
					    /Users/hpk/tmp/pytest-679/test_needsfiles0
 | 
				
			||||||
    1 failed in 0.15 seconds
 | 
					    1 failed in 0.16 seconds
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Before the test runs, a unique-per-test-invocation temporary directory
 | 
					Before the test runs, a unique-per-test-invocation temporary directory
 | 
				
			||||||
was created.  More info at :ref:`tmpdir handling`.
 | 
					was created.  More info at :ref:`tmpdir handling`.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,10 +39,10 @@ will be undone.
 | 
				
			||||||
.. background check:
 | 
					.. background check:
 | 
				
			||||||
   $ py.test
 | 
					   $ py.test
 | 
				
			||||||
   =========================== test session starts ============================
 | 
					   =========================== test session starts ============================
 | 
				
			||||||
   platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					   platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
   collecting ... collected 0 items
 | 
					   collecting ... collected 0 items
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
   =============================  in 0.20 seconds =============================
 | 
					   =============================  in 0.00 seconds =============================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Method reference of the monkeypatch function argument
 | 
					Method reference of the monkeypatch function argument
 | 
				
			||||||
-----------------------------------------------------
 | 
					-----------------------------------------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -130,7 +130,7 @@ Running it with the report-on-xfail option gives this output::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    example $ py.test -rx xfail_demo.py
 | 
					    example $ py.test -rx xfail_demo.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 6 items
 | 
					    collecting ... collected 6 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    xfail_demo.py xxxxxx
 | 
					    xfail_demo.py xxxxxx
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ Running this would result in a passed test except for the last
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_tmpdir.py
 | 
					    $ py.test test_tmpdir.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_tmpdir.py F
 | 
					    test_tmpdir.py F
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@ Running this would result in a passed test except for the last
 | 
				
			||||||
    ================================= FAILURES =================================
 | 
					    ================================= FAILURES =================================
 | 
				
			||||||
    _____________________________ test_create_file _____________________________
 | 
					    _____________________________ test_create_file _____________________________
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    tmpdir = local('/Users/hpk/tmp/pytest-1596/test_create_file0')
 | 
					    tmpdir = local('/Users/hpk/tmp/pytest-680/test_create_file0')
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        def test_create_file(tmpdir):
 | 
					        def test_create_file(tmpdir):
 | 
				
			||||||
            p = tmpdir.mkdir("sub").join("hello.txt")
 | 
					            p = tmpdir.mkdir("sub").join("hello.txt")
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ Running this would result in a passed test except for the last
 | 
				
			||||||
    E       assert 0
 | 
					    E       assert 0
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_tmpdir.py:7: AssertionError
 | 
					    test_tmpdir.py:7: AssertionError
 | 
				
			||||||
    ========================= 1 failed in 0.20 seconds =========================
 | 
					    ========================= 1 failed in 0.17 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _`base temporary directory`:
 | 
					.. _`base temporary directory`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ Running it yields::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ py.test test_unittest.py
 | 
					    $ py.test test_unittest.py
 | 
				
			||||||
    =========================== test session starts ============================
 | 
					    =========================== test session starts ============================
 | 
				
			||||||
    platform darwin -- Python 2.7.1 -- pytest-2.2.0
 | 
					    platform darwin -- Python 2.7.1 -- pytest-2.2.1
 | 
				
			||||||
    collecting ... collected 1 items
 | 
					    collecting ... collected 1 items
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    test_unittest.py F
 | 
					    test_unittest.py F
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@ Running it yields::
 | 
				
			||||||
    test_unittest.py:8: AssertionError
 | 
					    test_unittest.py:8: AssertionError
 | 
				
			||||||
    ----------------------------- Captured stdout ------------------------------
 | 
					    ----------------------------- Captured stdout ------------------------------
 | 
				
			||||||
    hello
 | 
					    hello
 | 
				
			||||||
    ========================= 1 failed in 0.23 seconds =========================
 | 
					    ========================= 1 failed in 0.04 seconds =========================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _`unittest.py style`: http://docs.python.org/library/unittest.html
 | 
					.. _`unittest.py style`: http://docs.python.org/library/unittest.html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								setup.py
								
								
								
								
							
							
						
						
									
										4
									
								
								setup.py
								
								
								
								
							| 
						 | 
					@ -24,7 +24,7 @@ def main():
 | 
				
			||||||
        name='pytest',
 | 
					        name='pytest',
 | 
				
			||||||
        description='py.test: simple powerful testing with Python',
 | 
					        description='py.test: simple powerful testing with Python',
 | 
				
			||||||
        long_description = long_description,
 | 
					        long_description = long_description,
 | 
				
			||||||
        version='2.2.1.dev5',
 | 
					        version='2.2.1',
 | 
				
			||||||
        url='http://pytest.org',
 | 
					        url='http://pytest.org',
 | 
				
			||||||
        license='MIT license',
 | 
					        license='MIT license',
 | 
				
			||||||
        platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
 | 
					        platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ def main():
 | 
				
			||||||
        author_email='holger at merlinux.eu',
 | 
					        author_email='holger at merlinux.eu',
 | 
				
			||||||
        entry_points= make_entry_points(),
 | 
					        entry_points= make_entry_points(),
 | 
				
			||||||
        # the following should be enabled for release
 | 
					        # the following should be enabled for release
 | 
				
			||||||
        install_requires=['py>=1.4.6.dev6'],
 | 
					        install_requires=['py>=1.4.6'],
 | 
				
			||||||
        classifiers=['Development Status :: 6 - Mature',
 | 
					        classifiers=['Development Status :: 6 - Mature',
 | 
				
			||||||
                     'Intended Audience :: Developers',
 | 
					                     'Intended Audience :: Developers',
 | 
				
			||||||
                     'License :: OSI Approved :: MIT License',
 | 
					                     'License :: OSI Approved :: MIT License',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue