54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| import pprint
 | |
| from typing import List
 | |
| from typing import Tuple
 | |
| 
 | |
| import pytest
 | |
| 
 | |
| 
 | |
| def pytest_generate_tests(metafunc):
 | |
|     if "arg1" in metafunc.fixturenames:
 | |
|         metafunc.parametrize("arg1", ["arg1v1", "arg1v2"], scope="module")
 | |
| 
 | |
|     if "arg2" in metafunc.fixturenames:
 | |
|         metafunc.parametrize("arg2", ["arg2v1", "arg2v2"], scope="function")
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="session")
 | |
| def checked_order():
 | |
|     order: List[Tuple[str, str, str]] = []
 | |
| 
 | |
|     yield order
 | |
|     pprint.pprint(order)
 | |
|     assert order == [
 | |
|         ("issue_519.py", "fix1", "arg1v1"),
 | |
|         ("test_one[arg1v1-arg2v1]", "fix2", "arg2v1"),
 | |
|         ("test_two[arg1v1-arg2v1]", "fix2", "arg2v1"),
 | |
|         ("test_one[arg1v1-arg2v2]", "fix2", "arg2v2"),
 | |
|         ("test_two[arg1v1-arg2v2]", "fix2", "arg2v2"),
 | |
|         ("issue_519.py", "fix1", "arg1v2"),
 | |
|         ("test_one[arg1v2-arg2v1]", "fix2", "arg2v1"),
 | |
|         ("test_two[arg1v2-arg2v1]", "fix2", "arg2v1"),
 | |
|         ("test_one[arg1v2-arg2v2]", "fix2", "arg2v2"),
 | |
|         ("test_two[arg1v2-arg2v2]", "fix2", "arg2v2"),
 | |
|     ]
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="module")
 | |
| def fix1(request, arg1, checked_order):
 | |
|     checked_order.append((request.node.name, "fix1", arg1))
 | |
|     yield "fix1-" + arg1
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="function")
 | |
| def fix2(request, fix1, arg2, checked_order):
 | |
|     checked_order.append((request.node.name, "fix2", arg2))
 | |
|     yield "fix2-" + arg2 + fix1
 | |
| 
 | |
| 
 | |
| def test_one(fix2):
 | |
|     pass
 | |
| 
 | |
| 
 | |
| def test_two(fix2):
 | |
|     pass
 |