pytest-csv-params/tests/poc/test_parametrize_with_gener...

62 lines
1.4 KiB
Python

"""
We are using a pytest feature heavily: Parametrization. These tests make sure this feature works still as expected.
"""
from string import ascii_letters
from typing import Generator, List, Type
import pytest
from .conftest import CheapCounter
def data_generator() -> Generator[List[str], None, None]:
"""
Simple Test Data Generator
"""
for val_a in ascii_letters[0:5]:
for val_b in ascii_letters[5:10]:
yield [val_a, val_b, f"{val_a}-{val_b}"]
@pytest.mark.order(1)
@pytest.mark.parametrize(
["val_a", "val_b", "val_c"],
[
["a", "b", "a:b"],
["c", "d", "c:d"],
],
)
def test_simple_parametrize(val_a: str, val_b: str, val_c: str, cheap_counter: Type[CheapCounter]) -> None:
"""
Test the standard parametrization
"""
assert f"{val_a}:{val_b}" == val_c
cheap_counter.increment("simple")
@pytest.mark.order(2)
@pytest.mark.parametrize(
["val_a", "val_b", "val_c"],
data_generator(),
)
def test_generator_parametrize(val_a: str, val_b: str, val_c: str, cheap_counter: Type[CheapCounter]) -> None:
"""
Test the generator way
"""
assert f"{val_a}-{val_b}" == val_c
cheap_counter.increment("generator")
@pytest.mark.order(3)
def test_evaluation(cheap_counter: Type[CheapCounter]) -> None:
"""
Evaluate the tests before
"""
assert cheap_counter.get_value("simple") == 2
assert cheap_counter.get_value("generator") == 25