commit
						d00e2da6e9
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							|  | @ -46,6 +46,7 @@ Dave Hunt | ||||||
| David Díaz-Barquero | David Díaz-Barquero | ||||||
| David Mohr | David Mohr | ||||||
| David Vierra | David Vierra | ||||||
|  | Daw-Ran Liou | ||||||
| Denis Kirisov | Denis Kirisov | ||||||
| Diego Russo | Diego Russo | ||||||
| Dmitry Dygalo | Dmitry Dygalo | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | Append example for pytest.param in the example/parametrize document. | ||||||
|  | @ -485,4 +485,54 @@ of our ``test_func1`` was skipped.  A few notes: | ||||||
|   values as well. |   values as well. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | Set marks or test ID for individual parametrized test | ||||||
|  | -------------------------------------------------------------------- | ||||||
| 
 | 
 | ||||||
|  | Use ``pytest.param`` to apply marks or set test ID to individual parametrized test. | ||||||
|  | For example:: | ||||||
|  | 
 | ||||||
|  |     # content of test_pytest_param_example.py | ||||||
|  |     import pytest | ||||||
|  |     @pytest.mark.parametrize('test_input,expected', [ | ||||||
|  |         ('3+5', 8), | ||||||
|  |         pytest.param('1+7', 8, | ||||||
|  |                      marks=pytest.mark.basic), | ||||||
|  |         pytest.param('2+4', 6, | ||||||
|  |                      marks=pytest.mark.basic, | ||||||
|  |                      id='basic_2+4'), | ||||||
|  |         pytest.param('6*9', 42, | ||||||
|  |                      marks=[pytest.mark.basic, pytest.mark.xfail], | ||||||
|  |                      id='basic_6*9'), | ||||||
|  |     ]) | ||||||
|  |     def test_eval(test_input, expected): | ||||||
|  |         assert eval(test_input) == expected | ||||||
|  |      | ||||||
|  | In this example, we have 4 parametrized tests. Except for the first test, | ||||||
|  | we mark the rest three parametrized tests with the custom marker ``basic``, | ||||||
|  | and for the fourth test we also use the built-in mark ``xfail`` to indicate this  | ||||||
|  | test is expected to fail. For explicitness, we set test ids for some tests. | ||||||
|  | 
 | ||||||
|  | Then run ``pytest`` with verbose mode and with only the ``basic`` marker:: | ||||||
|  | 
 | ||||||
|  |     pytest -v -m basic | ||||||
|  |     ============================================ test session starts ============================================= | ||||||
|  |     platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y | ||||||
|  |     rootdir: $REGENDOC_TMPDIR, inifile: | ||||||
|  |     collected 4 items | ||||||
|  | 
 | ||||||
|  |     test_pytest_param_example.py::test_eval[1+7-8] PASSED | ||||||
|  |     test_pytest_param_example.py::test_eval[basic_2+4] PASSED | ||||||
|  |     test_pytest_param_example.py::test_eval[basic_6*9] xfail | ||||||
|  |     ========================================== short test summary info =========================================== | ||||||
|  |     XFAIL test_pytest_param_example.py::test_eval[basic_6*9] | ||||||
|  | 
 | ||||||
|  |     ============================================= 1 tests deselected ============================================= | ||||||
|  | 
 | ||||||
|  | As the result: | ||||||
|  | 
 | ||||||
|  | - Four tests were collected | ||||||
|  | - One test was deselected because it doesn't have the ``basic`` mark. | ||||||
|  | - Three tests with the ``basic`` mark was selected. | ||||||
|  | - The test ``test_eval[1+7-8]`` passed, but the name is autogenerated and confusing. | ||||||
|  | - The test ``test_eval[basic_2+4]`` passed. | ||||||
|  | - The test ``test_eval[basic_6*9]`` was expected to fail and did fail. | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue