参数化有两种方式:
1、
@pytest.mark.parametrize
2、利用conftest.py里的
pytest_generate_tests
1中的例子如下:
@pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
def test_eval(test_input, expected):
assert eval(test_input) == expected
2中的例子(自己定义参数化,pytest_generate_tests
是在收集测试方法时会被调用)的:
conftest.py
def pytest_addoption(parser): parser.addoption( "--stringinput", action="append", default=[], help="list of stringinputs to pass to test functions", ) def pytest_generate_tests(metafunc): if "stringinput" in metafunc.fixturenames: metafunc.parametrize("stringinput", metafunc.config.getoption("stringinput"))
a_test.py
def test_valid_string(stringinput): assert stringinput.isalpha()
执行测试:
pytest -q --stringinput="hello" --stringinput="world" a_test.py
参数化参考地址:
https://docs.pytest.org/en/latest/parametrize.html#pytest-mark-parametrize-parametrizing-test-functions