有没有办法将输入传递给 pytest.mark.parametrize()?
如果我尝试……</p>
import pytest
from typing import List
@pytest.mark.parametrize("rotation", range(len(input_sequence)))
def test_sequence_rotation(
input_sequence: List[float],
rotation: int,
) -> None:
sequence = input_sequence[rotation:] + input_sequence[:rotation]
print(f"Testing sequence {sequence}")
……我明白了NameError: name 'input_sequence' is not defined
。
对于某些上下文,我input_sequence
在 conftest.py 中定义为 pytest 命令选项:
import pytest
from typing import List
from _pytest.config.argparsing import Parser
from _pytest.fixtures import SubRequest
def pytest_addoption(parser: Parser) -> None:
parser.addoption("--sequence-csv", type=str, required=True)
@pytest.fixture()
def input_sequence(request: SubRequest) -> List[float]:
csv = request.config.getoption("--sequence-csv")
return [float(i) for i in csv.split(",")]