merge pfctdayelise/issue463
This commit is contained in:
		
						commit
						a7d2a82caa
					
				|  | @ -60,6 +60,8 @@ | |||
| 
 | ||||
| - allow to override parametrized fixtures with non-parametrized ones and vice versa (bubenkoff). | ||||
| 
 | ||||
| - fix issue463: raise specific error for 'parameterize' misspelling (pfctdayelise). | ||||
| 
 | ||||
| 2.6.4 | ||||
| ---------- | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,6 +1,11 @@ | |||
| """ generic mechanism for marking and selecting python functions. """ | ||||
| import py | ||||
| 
 | ||||
| class MarkerError(Exception): | ||||
|     """ | ||||
|     Error in use of a pytest marker/attribute. | ||||
|     """ | ||||
| 
 | ||||
| 
 | ||||
| def pytest_namespace(): | ||||
|     return {'mark': MarkGenerator()} | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ import py | |||
| import inspect | ||||
| import sys | ||||
| import pytest | ||||
| from _pytest.mark import MarkDecorator | ||||
| from _pytest.mark import MarkDecorator, MarkerError | ||||
| from py._code.code import TerminalRepr | ||||
| 
 | ||||
| import _pytest | ||||
|  | @ -142,6 +142,10 @@ def pytest_cmdline_main(config): | |||
| 
 | ||||
| 
 | ||||
| def pytest_generate_tests(metafunc): | ||||
|     # this misspelling is common - raise a specific error to alert the user | ||||
|     if hasattr(metafunc.function, 'parameterize'): | ||||
|         msg = "{0} has 'parameterize', spelling should be 'parametrize'" | ||||
|         raise MarkerError(msg.format(metafunc.function.__name__)) | ||||
|     try: | ||||
|         markers = metafunc.function.parametrize | ||||
|     except AttributeError: | ||||
|  |  | |||
|  | @ -692,6 +692,21 @@ class TestMetafuncFunctional: | |||
|         reprec = testdir.inline_run() | ||||
|         reprec.assertoutcome(passed=4) | ||||
| 
 | ||||
|     @pytest.mark.issue463 | ||||
|     def test_parameterize_misspelling(self, testdir): | ||||
|         testdir.makepyfile(""" | ||||
|             import pytest | ||||
| 
 | ||||
|             @pytest.mark.parameterize("x", range(2)) | ||||
|             def test_foo(x): | ||||
|                 pass | ||||
|         """) | ||||
|         reprec = testdir.inline_run('--collectonly') | ||||
|         failures = reprec.getfailures() | ||||
|         assert len(failures) == 1 | ||||
|         expectederror = "MarkerError: test_foo has 'parameterize', spelling should be 'parametrize'" | ||||
|         assert expectederror in failures[0].longrepr.reprcrash.message | ||||
| 
 | ||||
| 
 | ||||
| class TestMarkersWithParametrization: | ||||
|     pytestmark = pytest.mark.issue308 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue