如何将灯具返回的值作为参数传递给函数

时间:2018-11-18 09:18:11

标签: python automated-tests command-line-interface pytest

我这样运行测试:

pytest -v testing.py --parameters=10,11,12

在固定装置内,我获得了命令行参数,从list生成了string,并且需要将此list传递给测试,如图所示

code

#  content of conftest.py
import pytest


def pytest_addoption(parser):
    parser.addoption(
        "--parameters", action="store", default='10,11,12', help="help")


@pytest.fixture
def cmdopt(request):
    return request.config.getoption("--parameters")


#  content of testing.py
import pytest


@pytest.fixture(autouse=True)
def get_params(cmdopt):
    data = cmdopt.split(',')  #  default ['10','11','12']
    return data


@pytest.mark.parametrize('parameter', 'the list that returned the fixture get_params')
def test_mytest(parameter):
    print(parameter)  # I first expect 10 then 11 then 12

如何实现?谢谢。

1 个答案:

答案 0 :(得分:0)

引用here

  

有时您可能想要实施自己的参数化方案或   实施一些确定参数或范围的动力   夹具。为此,您可以使用 pytest_generate_tests 钩子   收集测试函数时调用。通过传入的metafunc   您可以检查请求测试上下文的对象,并且大多数   重要的是,您可以调用metafunc.parametrize()导致   参数化。

所以,请检查一下:

#  content of conftest.py
import pytest


def pytest_addoption(parser):
    parser.addoption(
        "--parameters", action="store", default='10,11,12', help="help")


def pytest_generate_tests(metafunc):
if 'parameters' in metafunc.fixturenames:
    if metafunc.config.getoption('parameters'):
        option_value = metafunc.config.getoption('parameters')
        metafunc.parametrize("parameters", option_value.split(','))

#  content of testing.py
import pytest


def test_mytest(parameter):
    print(parameter)