Skip to content

Commit

Permalink
Fixed lazy value resolution issue when multiple consecutive lazy valu…
Browse files Browse the repository at this point in the history
…es are present in a @parametrize containing a fixture_ref (#275)

* Fixed issue where a lazy value (for example a case function) was not resolved before being injected in a parametrized function, and was therefore appearing as a `_LazyValueCaseParamValue `. Fixed #274

* 3.6.13 changelog

Co-authored-by: Sylvain MARIE <sylvain.marie@se.com>
  • Loading branch information
smarie and Sylvain MARIE committed May 20, 2022
1 parent 0ef1a0e commit 4f5c466
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
4 changes: 4 additions & 0 deletions docs/changelog.md
@@ -1,5 +1,9 @@
# Changelog

### 3.6.13 - bugfix

- Fixed issue where a lazy value (for example a case function) was not resolved before being injected in a parametrized function, and was therefore appearing as a `_LazyValueCaseParamValue `. Fixed [#274](https://github.com/smarie/python-pytest-cases/issues/274)

### 3.6.12 - type hint fix + enhanced compatibility with pytest plugins

- Improved compatibility with other `pytest` plugins, in particular `pytest-repeat`, by supporting removal from fixture closure tree. Fixed [#269](https://github.com/smarie/python-pytest-cases/issues/269).
Expand Down
2 changes: 1 addition & 1 deletion src/pytest_cases/fixture_core2.py
Expand Up @@ -119,7 +119,7 @@ def __param_fixture(request):
# create the fixture - set its name so that the optional hook can read it easily
@with_signature("%s(request)" % argname)
def __param_fixture(request):
return request.param
return get_lazy_args(request.param, request)

if debug:
print("Creating parametrized fixture %r returning %r" % (argname, argvalues))
Expand Down
33 changes: 33 additions & 0 deletions tests/cases/issues/test_issue_274.py
@@ -0,0 +1,33 @@
import pytest
from pytest_cases import fixture, parametrize_with_cases


class DataCases:
def data_dummy(self):
return 1

def data_dummy2(self):
return 1

@pytest.mark.parametrize("a", [False])
def data_dummy3(self, a):
return 1


@fixture
@parametrize_with_cases("dset", cases=DataCases, prefix="data_", debug=True)
def dataset(dset):
assert dset == 1
yield dset


def test_foo(dataset):
assert dataset == 1


def test_synthesis(module_results_dct):
assert list(module_results_dct) == [
'test_foo[dummy]',
'test_foo[dummy2]',
'test_foo[dummy3-False]',
]

0 comments on commit 4f5c466

Please sign in to comment.