Хорошо, после разъяснения в комментариях, что a
является глобальным ... Было бы лучше, если бы это было не так. :)
Но если вы не можете изменить его подпись,
import pytest
def eval():
if a == 2:
return 8
elif a == 3:
return 4
else:
return 42
@pytest.mark.parametrize(
"input_value, expected", [(2, 8), (3, 4), (4, 42)]
)
def test_eval(input_value, expected):
global a
a = input_value
assert eval() == expected
должно помочь вам.