/pytest-lazy-fixture

It helps to use fixtures in pytest.mark.parametrize

Primary LanguagePythonMIT LicenseMIT

pytest-lazy-fixture travis-ci appveyor pypi

Use your fixtures in @pytest.mark.parametrize.

Installation

pip install pytest-lazy-fixture

Usage

pytest-lazy-fixture lets you use a fixture as one of the values passed in @pytest.mark.parametrize:

import pytest
from pytest_lazyfixture import lazy_fixture

@pytest.fixture
def one():
    return 1

@pytest.mark.parametrize('arg1,arg2', [
    ('val1', lazy_fixture('one')),
])
def test_func(arg1, arg2):
    assert arg2 == 1

This can be even more useful when the fixture is itself parametrized:

import pytest
from pytest_lazyfixture import lazy_fixture

@pytest.fixture(params=[1, 2])
def one(request):
    return request.param

@pytest.mark.parametrize('arg1,arg2', [
    ('val1', lazy_fixture('one')),
])
def test_func(arg1, arg2):
    assert arg2 in [1, 2]

Also you can use it as a parameter in @pytest.fixture:

import pytest
from pytest_lazyfixture import lazy_fixture

@pytest.fixture(params=[
    lazy_fixture('one'),
    lazy_fixture('two')
])
def some(request):
    return request.param

@pytest.fixture
def one():
    return 1

@pytest.fixture
def two():
    return 2

def test_func(some):
    assert some in [1, 2]

Please see tests for more examples.

Contributing

Contributions are very welcome. Tests can be run with tox.

License

Distributed under the terms of the MIT license, pytest-lazy-fixture is free and open source software

Issues

If you encounter any problems, please file an issue along with a detailed description.