Merge pull request #1011 from hpk42/master
merge latest pytest-2.7 changes
This commit is contained in:
		
						commit
						2093889ac2
					
				|  | @ -0,0 +1,2 @@ | ||||||
|  | # | ||||||
|  | __version__ = '2.8.0.dev5' | ||||||
|  | @ -3,8 +3,6 @@ import bdb | ||||||
| import sys | import sys | ||||||
| from time import time | from time import time | ||||||
| 
 | 
 | ||||||
| from pkg_resources import parse_version |  | ||||||
| 
 |  | ||||||
| import py | import py | ||||||
| import pytest | import pytest | ||||||
| from py._code.code import TerminalRepr | from py._code.code import TerminalRepr | ||||||
|  | @ -496,7 +494,14 @@ def importorskip(modname, minversion=None): | ||||||
|     if minversion is None: |     if minversion is None: | ||||||
|         return mod |         return mod | ||||||
|     verattr = getattr(mod, '__version__', None) |     verattr = getattr(mod, '__version__', None) | ||||||
|     if verattr is None or parse_version(verattr) < parse_version(minversion): |     if minversion is not None: | ||||||
|  |         try: | ||||||
|  |             from pkg_resources import parse_version as pv | ||||||
|  |         except ImportError: | ||||||
|  |             skip("we have a required version for %r but can not import " | ||||||
|  |                  "no pkg_resources to parse version strings." %(modname,)) | ||||||
|  |         if verattr is None or pv(verattr) < pv(minversion): | ||||||
|             skip("module %r has __version__ %r, required is: %r" %( |             skip("module %r has __version__ %r, required is: %r" %( | ||||||
|                  modname, verattr, minversion)) |                  modname, verattr, minversion)) | ||||||
|     return mod |     return mod | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -62,7 +62,7 @@ using it:: | ||||||
|     @pytest.fixture |     @pytest.fixture | ||||||
|     def smtp(): |     def smtp(): | ||||||
|         import smtplib |         import smtplib | ||||||
|         return smtplib.SMTP("merlinux.eu") |         return smtplib.SMTP("smtp.gmail.com") | ||||||
| 
 | 
 | ||||||
|     def test_ehlo(smtp): |     def test_ehlo(smtp): | ||||||
|         response, msg = smtp.ehlo() |         response, msg = smtp.ehlo() | ||||||
|  | @ -169,7 +169,7 @@ access the fixture function:: | ||||||
| 
 | 
 | ||||||
|     @pytest.fixture(scope="module") |     @pytest.fixture(scope="module") | ||||||
|     def smtp(): |     def smtp(): | ||||||
|         return smtplib.SMTP("merlinux.eu") |         return smtplib.SMTP("smtp.gmail.com") | ||||||
| 
 | 
 | ||||||
| The name of the fixture again is ``smtp`` and you can access its result by | The name of the fixture again is ``smtp`` and you can access its result by | ||||||
| listing the name ``smtp`` as an input parameter in any test or fixture | listing the name ``smtp`` as an input parameter in any test or fixture | ||||||
|  | @ -178,14 +178,14 @@ function (in or below the directory where ``conftest.py`` is located):: | ||||||
|     # content of test_module.py |     # content of test_module.py | ||||||
| 
 | 
 | ||||||
|     def test_ehlo(smtp): |     def test_ehlo(smtp): | ||||||
|         response = smtp.ehlo() |         response, msg = smtp.ehlo() | ||||||
|         assert response[0] == 250 |         assert response == 250 | ||||||
|         assert "merlinux" in response[1] |         assert "smtp.gmail.com" in str(msg, 'ascii') | ||||||
|         assert 0  # for demo purposes |         assert 0  # for demo purposes | ||||||
| 
 | 
 | ||||||
|     def test_noop(smtp): |     def test_noop(smtp): | ||||||
|         response = smtp.noop() |         response, msg = smtp.noop() | ||||||
|         assert response[0] == 250 |         assert response == 250 | ||||||
|         assert 0  # for demo purposes |         assert 0  # for demo purposes | ||||||
| 
 | 
 | ||||||
| We deliberately insert failing ``assert 0`` statements in order to | We deliberately insert failing ``assert 0`` statements in order to | ||||||
|  | @ -258,7 +258,7 @@ or multiple times:: | ||||||
| 
 | 
 | ||||||
|     @pytest.fixture(scope="module") |     @pytest.fixture(scope="module") | ||||||
|     def smtp(request): |     def smtp(request): | ||||||
|         smtp = smtplib.SMTP("merlinux.eu") |         smtp = smtplib.SMTP("smtp.gmail.com") | ||||||
|         def fin(): |         def fin(): | ||||||
|             print ("teardown smtp") |             print ("teardown smtp") | ||||||
|             smtp.close() |             smtp.close() | ||||||
|  | @ -299,7 +299,7 @@ read an optional server URL from the test module which uses our fixture:: | ||||||
| 
 | 
 | ||||||
|     @pytest.fixture(scope="module") |     @pytest.fixture(scope="module") | ||||||
|     def smtp(request): |     def smtp(request): | ||||||
|         server = getattr(request.module, "smtpserver", "merlinux.eu") |         server = getattr(request.module, "smtpserver", "smtp.gmail.com") | ||||||
|         smtp = smtplib.SMTP(server) |         smtp = smtplib.SMTP(server) | ||||||
| 
 | 
 | ||||||
|         def fin(): |         def fin(): | ||||||
|  | @ -363,7 +363,7 @@ through the special :py:class:`request <FixtureRequest>` object:: | ||||||
|     import smtplib |     import smtplib | ||||||
| 
 | 
 | ||||||
|     @pytest.fixture(scope="module", |     @pytest.fixture(scope="module", | ||||||
|                     params=["merlinux.eu", "mail.python.org"]) |                     params=["smtp.gmail.com", "mail.python.org"]) | ||||||
|     def smtp(request): |     def smtp(request): | ||||||
|         smtp = smtplib.SMTP(request.param) |         smtp = smtplib.SMTP(request.param) | ||||||
|         def fin(): |         def fin(): | ||||||
|  | @ -436,7 +436,7 @@ connection the second test fails in ``test_ehlo`` because a | ||||||
| different server string is expected than what arrived. | different server string is expected than what arrived. | ||||||
| 
 | 
 | ||||||
| pytest will build a string that is the test ID for each fixture value | pytest will build a string that is the test ID for each fixture value | ||||||
| in a parametrized fixture, e.g. ``test_ehlo[merlinux.eu]`` and | in a parametrized fixture, e.g. ``test_ehlo[smtp.gmail.com]`` and | ||||||
| ``test_ehlo[mail.python.org]`` in the above examples.  These IDs can | ``test_ehlo[mail.python.org]`` in the above examples.  These IDs can | ||||||
| be used with ``-k`` to select specific cases to run, and they will | be used with ``-k`` to select specific cases to run, and they will | ||||||
| also identify the specific case when one is failing.  Running pytest | also identify the specific case when one is failing.  Running pytest | ||||||
|  | @ -448,6 +448,7 @@ make a string based on the argument name.  It is possible to customise | ||||||
| the string used in a test ID for a certain fixture value by using the | the string used in a test ID for a certain fixture value by using the | ||||||
| ``ids`` keyword argument:: | ``ids`` keyword argument:: | ||||||
| 
 | 
 | ||||||
|  |    # content of test_ids.py | ||||||
|    import pytest |    import pytest | ||||||
| 
 | 
 | ||||||
|    @pytest.fixture(params=[0, 1], ids=["spam", "ham"]) |    @pytest.fixture(params=[0, 1], ids=["spam", "ham"]) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue