diff --git a/docs/changelog.md b/docs/changelog.md index b80785d7..5eaa4870 100644 --- a/docs/changelog.md +++ b/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). diff --git a/src/pytest_cases/fixture_core2.py b/src/pytest_cases/fixture_core2.py index 0b5e28d9..326ff0e8 100644 --- a/src/pytest_cases/fixture_core2.py +++ b/src/pytest_cases/fixture_core2.py @@ -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)) diff --git a/tests/cases/issues/test_issue_274.py b/tests/cases/issues/test_issue_274.py new file mode 100644 index 00000000..5ea12f4b --- /dev/null +++ b/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]', + ]