Skip to main content

Allows you to use fixtures in @pytest.mark.parametrize.

Project description

pytest-lazy-fixtures

codecov CI PyPI version PyPI downloads

Use your fixtures in @pytest.mark.parametrize.

This project was inspired by pytest-lazy-fixture.

Improvements that have been made in this project:

  1. You can use fixtures in any data structures
  2. You can access the attributes of fixtures
  3. You can use functions in fixtures

Installation

pip install pytest-lazy-fixtures

Usage

To use your fixtures inside @pytest.mark.parametrize you can use lf (lazy_fixture).

import pytest
from pytest_lazy_fixtures import lf

@pytest.fixture()
def one():
    return 1

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

lf can be used with any data structures. For example, in the following example, lf is used in the dictionary:

import pytest
from pytest_lazy_fixtures import lf

@pytest.fixture()
def one():
    return 1

@pytest.mark.parametrize('arg1,arg2', [('val1', {"value": lf('one')})])
def test_func(arg1, arg2):
    assert arg2 == {"value": 1}

You can also specify getting an attribute through a dot:

import pytest
from pytest_lazy_fixtures import lf

class Entity:
    def __init__(self, value):
        self.value = value

@pytest.fixture()
def one():
    return Entity(1)

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

And there is some useful wrapper called lfc (lazy_fixture_callable). It can work with any callable and your fixtures, e.g.

import pytest
from pytest_lazy_fixtures import lf, lfc

class Entity:
    def __init__(self, value):
        self.value = value

    def __str__(self) -> str:
        return str(self.value)

    def sum(self, value: int) -> int:
        return self.value + value

@pytest.fixture()
def entity():
    return Entity(1)

@pytest.fixture()
def two():
    return 2

@pytest.fixture()
def three():
    return 3

@pytest.fixture()
def entity_format():
    def _entity_format(entity: Entity):
        return {"value": entity.value}

    return _entity_format

@pytest.mark.parametrize(
    "message",
    [
        lfc(
            "There is two lazy fixture args, {} and {}! And one kwarg {field}! And also simple value {simple}".format,
            lf("entity"),
            lf("two"),
            field=lf("three"),
            simple="value",
        ),
    ],
)
def test_lazy_fixture_callable_with_func(message):
    assert message == "There is two lazy fixture args, 1 and 2! And one kwarg 3! And also simple value value"


@pytest.mark.parametrize("formatted", [lfc("entity_format", lf("entity"))])
def test_lazy_fixture_callable_with_lf(formatted, entity):
    assert formatted == {"value": entity.value}


@pytest.mark.parametrize("result", [lfc("entity.sum", lf("two"))])
def test_lazy_fixture_callable_with_attr_lf(result):
    assert result == 3

Contributing

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

License

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

Issues

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_lazy_fixtures-1.1.4.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

pytest_lazy_fixtures-1.1.4-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file pytest_lazy_fixtures-1.1.4.tar.gz.

File metadata

  • Download URL: pytest_lazy_fixtures-1.1.4.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.8.18 Linux/6.11.0-1014-azure

File hashes

Hashes for pytest_lazy_fixtures-1.1.4.tar.gz
Algorithm Hash digest
SHA256 c494b52d798890033d64b28687a4d52807c8b0f606d56316e139df0cbe116c57
MD5 9a583fce218ee790aa4eacd15a10ae8f
BLAKE2b-256 1b3097444293c3339adfb6fe04a28e2edbaff5d5926e789de40e9a69401f885c

See more details on using hashes here.

File details

Details for the file pytest_lazy_fixtures-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: pytest_lazy_fixtures-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.8.18 Linux/6.11.0-1014-azure

File hashes

Hashes for pytest_lazy_fixtures-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1504b6e267657d70d34829fce2580cedd4d3f8558491d6c03fab9b525ec77f2b
MD5 67d21c79e2c4c398ceb1f751eb5732f4
BLAKE2b-256 39c9a9bcc96ceb1c15e985fcb3060b33120b8bfa1762f94499c014420f12e51e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page