test_ok2/testing/example_scripts/issue_519.py

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_one[arg1v1-arg2v2]", "fix2", "arg2v2"),
("test_two[arg1v1-arg2v1]", "fix2", "arg2v1"),
("test_two[arg1v1-arg2v2]", "fix2", "arg2v2"),
("issue_519.py", "fix1", "arg1v2"),
("test_one[arg1v2-arg2v1]", "fix2", "arg2v1"),
("test_one[arg1v2-arg2v2]", "fix2", "arg2v2"),
("test_two[arg1v2-arg2v1]", "fix2", "arg2v1"),
("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