Name | pytest-lazy-fixtures JSON |
Version |
1.3.4
JSON |
| download |
home_page | None |
Summary | Allows you to use fixtures in @pytest.mark.parametrize. |
upload_time | 2025-08-19 09:45:20 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | None |
keywords |
fixture
lazy
pytest
tests
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pytest-lazy-fixtures
[](https://codecov.io/gh/dev-petrov/pytest-lazy-fixtures)
[](https://github.com/dev-petrov/pytest-lazy-fixtures/actions/workflows/ci-test.yml)
[](https://pypi.org/project/pytest-lazy-fixtures/)
[](https://pypistats.org/packages/pytest-lazy-fixtures)
Use your fixtures in `@pytest.mark.parametrize`.
This project was inspired by [pytest-lazy-fixture](https://github.com/TvoroG/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
4. It is compatible with [pytest-deadfixtures](https://github.com/jllorencetti/pytest-deadfixtures)
## Installation
```shell
pip install pytest-lazy-fixtures
```
## Usage
To use your fixtures inside `@pytest.mark.parametrize` you can use `lf` (`lazy_fixture`).
```python
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:
```python
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:
```python
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.
```python
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.
Raw data
{
"_id": null,
"home_page": null,
"name": "pytest-lazy-fixtures",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "fixture, lazy, pytest, tests",
"author": null,
"author_email": "Petrov Anton <antonp2@yandex.ru>",
"download_url": "https://files.pythonhosted.org/packages/31/75/4be4c0bbf8badc4901ffa0594f723179442b282332646f5c210d1d4f05b9/pytest_lazy_fixtures-1.3.4.tar.gz",
"platform": null,
"description": "# pytest-lazy-fixtures\n\n[](https://codecov.io/gh/dev-petrov/pytest-lazy-fixtures)\n[](https://github.com/dev-petrov/pytest-lazy-fixtures/actions/workflows/ci-test.yml)\n[](https://pypi.org/project/pytest-lazy-fixtures/)\n[](https://pypistats.org/packages/pytest-lazy-fixtures)\n\nUse your fixtures in `@pytest.mark.parametrize`.\n\nThis project was inspired by [pytest-lazy-fixture](https://github.com/TvoroG/pytest-lazy-fixture).\n\nImprovements that have been made in this project:\n\n1. You can use fixtures in any data structures\n2. You can access the attributes of fixtures\n3. You can use functions in fixtures\n4. It is compatible with [pytest-deadfixtures](https://github.com/jllorencetti/pytest-deadfixtures)\n\n## Installation\n\n```shell\npip install pytest-lazy-fixtures\n```\n\n## Usage\n\nTo use your fixtures inside `@pytest.mark.parametrize` you can use `lf` (`lazy_fixture`).\n\n```python\nimport pytest\nfrom pytest_lazy_fixtures import lf\n\n@pytest.fixture()\ndef one():\n return 1\n\n@pytest.mark.parametrize('arg1,arg2', [('val1', lf('one'))])\ndef test_func(arg1, arg2):\n assert arg2 == 1\n```\n\n`lf` can be used with any data structures. For example, in the following example, `lf` is used in the dictionary:\n\n```python\nimport pytest\nfrom pytest_lazy_fixtures import lf\n\n@pytest.fixture()\ndef one():\n return 1\n\n@pytest.mark.parametrize('arg1,arg2', [('val1', {\"value\": lf('one')})])\ndef test_func(arg1, arg2):\n assert arg2 == {\"value\": 1}\n```\n\nYou can also specify getting an attribute through a dot:\n\n```python\nimport pytest\nfrom pytest_lazy_fixtures import lf\n\nclass Entity:\n def __init__(self, value):\n self.value = value\n\n@pytest.fixture()\ndef one():\n return Entity(1)\n\n@pytest.mark.parametrize('arg1,arg2', [('val1', lf('one.value'))])\ndef test_func(arg1, arg2):\n assert arg2 == 1\n```\n\nAnd there is some useful wrapper called `lfc` (`lazy_fixture_callable`).\nIt can work with any callable and your fixtures, e.g.\n\n```python\nimport pytest\nfrom pytest_lazy_fixtures import lf, lfc\n\nclass Entity:\n def __init__(self, value):\n self.value = value\n\n def __str__(self) -> str:\n return str(self.value)\n\n def sum(self, value: int) -> int:\n return self.value + value\n\n@pytest.fixture()\ndef entity():\n return Entity(1)\n\n@pytest.fixture()\ndef two():\n return 2\n\n@pytest.fixture()\ndef three():\n return 3\n\n@pytest.fixture()\ndef entity_format():\n def _entity_format(entity: Entity):\n return {\"value\": entity.value}\n\n return _entity_format\n\n@pytest.mark.parametrize(\n \"message\",\n [\n lfc(\n \"There is two lazy fixture args, {} and {}! And one kwarg {field}! And also simple value {simple}\".format,\n lf(\"entity\"),\n lf(\"two\"),\n field=lf(\"three\"),\n simple=\"value\",\n ),\n ],\n)\ndef test_lazy_fixture_callable_with_func(message):\n assert message == \"There is two lazy fixture args, 1 and 2! And one kwarg 3! And also simple value value\"\n\n\n@pytest.mark.parametrize(\"formatted\", [lfc(\"entity_format\", lf(\"entity\"))])\ndef test_lazy_fixture_callable_with_lf(formatted, entity):\n assert formatted == {\"value\": entity.value}\n\n\n@pytest.mark.parametrize(\"result\", [lfc(\"entity.sum\", lf(\"two\"))])\ndef test_lazy_fixture_callable_with_attr_lf(result):\n assert result == 3\n```\n\n## Contributing\n\nContributions are very welcome. Tests can be run with `pytest`.\n\n## License\n\nDistributed under the terms of the `MIT` license, `pytest-lazy-fixtures` is free and open source software\n\n## Issues\n\nIf you encounter any problems, please file an issue along with a detailed description.\n",
"bugtrack_url": null,
"license": null,
"summary": "Allows you to use fixtures in @pytest.mark.parametrize.",
"version": "1.3.4",
"project_urls": {
"Homepage": "https://github.com/dev-petrov/pytest-lazy-fixtures",
"Repository": "https://github.com/dev-petrov/pytest-lazy-fixtures"
},
"split_keywords": [
"fixture",
" lazy",
" pytest",
" tests"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "308db1143db7ad04d76c5828a79e1e28c87872d39a07e4177485e596e403959c",
"md5": "543b0e1c0d9069afd9ece098939e6524",
"sha256": "3fcb1032f1ffcde367588f4229f7fc6ff64b7a0522c9cd305a08baf39c1c4f5c"
},
"downloads": -1,
"filename": "pytest_lazy_fixtures-1.3.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "543b0e1c0d9069afd9ece098939e6524",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 8444,
"upload_time": "2025-08-19T09:45:19",
"upload_time_iso_8601": "2025-08-19T09:45:19.913454Z",
"url": "https://files.pythonhosted.org/packages/30/8d/b1143db7ad04d76c5828a79e1e28c87872d39a07e4177485e596e403959c/pytest_lazy_fixtures-1.3.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "31754be4c0bbf8badc4901ffa0594f723179442b282332646f5c210d1d4f05b9",
"md5": "bef4238c8c64abeec3cdcafd49bc901f",
"sha256": "7dd2c110830897b83f041d3a503cbdda10c98ced6dca7602fc43e2f6017c27ed"
},
"downloads": -1,
"filename": "pytest_lazy_fixtures-1.3.4.tar.gz",
"has_sig": false,
"md5_digest": "bef4238c8c64abeec3cdcafd49bc901f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 34713,
"upload_time": "2025-08-19T09:45:20",
"upload_time_iso_8601": "2025-08-19T09:45:20.666600Z",
"url": "https://files.pythonhosted.org/packages/31/75/4be4c0bbf8badc4901ffa0594f723179442b282332646f5c210d1d4f05b9/pytest_lazy_fixtures-1.3.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-19 09:45:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dev-petrov",
"github_project": "pytest-lazy-fixtures",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pytest-lazy-fixtures"
}