首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在pytest中传递参数化方法的预处理变量?

如何在pytest中传递参数化方法的预处理变量?
EN

Stack Overflow用户
提问于 2019-05-21 02:05:14
回答 1查看 188关注 0票数 1
代码语言:javascript
复制
"""confest.py file."""
import pytest


def pytest_addoption(parser):
    parser.addoption(
        "--cmdopt", action="store", default=None
    )
@pytest.fixture(scope="session", autouse=True)
def cmdopt(request):
    """Reading data from command prompt."""
    return request.config.getoption("--cmdopt")

@pytest.fixture(scope="session", autouse=True)
def do_something(cmdopt)
    """Would need to preprocess the needed one to make it parameterised."""
    return list_of_tuples

测试文件的结构是这样的

代码语言:javascript
复制
""" Test Suite File."""
import pytest

#do_something is in conftest file
@pytest.mark.parametrize("val1,val2", variables = do_something)
def test_case1(val1, val2):
    assert val1 == val2

当前代码实际上抛出了一个错误,因为conftest.py中使用的do_something方法不起作用。我怎样才能纠正代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 03:42:00

使用fixture不能做到这一点;但是,您可以编写一个pytest_generate_tests钩子来参数化val1val2测试参数。示例:

代码语言:javascript
复制
# conftest.py
import pytest


def pytest_addoption(parser):
    parser.addoption('--range', action='store', type=int, default=None)


def pytest_generate_tests(metafunc):
    if all(arg in metafunc.fixturenames for arg in ('val1', 'val2')):
        hi = metafunc.config.getoption('--range')
        if hi is not None:
            variables = [(i, i) for i in range(hi)]
        metafunc.parametrize("val1,val2", variables)

测试模块:

代码语言:javascript
复制
def test_case1(val1, val2):
    assert val1 == val2

使用不同的--range编号运行测试将产生不同数量的测试:

代码语言:javascript
复制
$ pytest -v --range 1
...
test_spam.py::test_case1[0-0] PASSED
...
$ pytest -v --range 5
...
test_spam.py::test_case1[0-0] PASSED
test_spam.py::test_case1[1-1] PASSED
test_spam.py::test_case1[2-2] PASSED
test_spam.py::test_case1[3-3] PASSED
test_spam.py::test_case1[4-4] PASSED
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56226065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档