From 05d7998c5429adc399b090ee5d4503820d712420 Mon Sep 17 00:00:00 2001 From: Eddie Bergman Date: Mon, 21 Mar 2022 16:24:11 +0100 Subject: [PATCH] Doc: Add documentation for parametrize_all_cases and get_all_cases (#259) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Doc: Add documentation for parametrize_all_cases and get_all_cases * Fix: typo * Update docs/api_reference.md * Update docs/api_reference.md Co-authored-by: Sylvain MariƩ --- docs/api_reference.md | 12 ++++++++---- src/pytest_cases/case_parametrizer_new.py | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/api_reference.md b/docs/api_reference.md index 5579eb6d..33b7a4fa 100644 --- a/docs/api_reference.md +++ b/docs/api_reference.md @@ -257,8 +257,10 @@ CaseFilter(filter_function: Callable) ### `@parametrize_with_cases` ```python +CaseType = Union[Callable, Type, ModuleRef] + @parametrize_with_cases(argnames: str, - cases: Union[Callable, Type, ModuleRef] = AUTO, + cases: Union[CaseType, List[CaseType]] = AUTO, prefix: str = 'case_', glob: str = None, has_tag: Union[str, Iterable[str]] = None, @@ -274,7 +276,7 @@ A decorator for test functions or fixtures, to parametrize them based on test ca By default (`cases=AUTO`) the list of test cases is automatically drawn from the python module file named `test__cases.py` or if not found, `case_.py`, where `test_` is the current module name. -Finally, the `cases` argument also accepts an explicit case function, cases-containing class, module or module name; or a list of such elements. Note that both absolute and relative module names are suported. +Finally, the `cases` argument also accepts an explicit case function, cases-containing class, module or module name; or a list containing any mix of these elements. Note that both absolute and relative module names are supported. Note that `@parametrize_with_cases` collection and parameter creation steps are strictly equivalent to [`get_all_cases`](#get_all_cases) + [`get_parametrize_args`](#get_parametrize_args). This can be handy for debugging purposes. @@ -335,8 +337,10 @@ Note that you can get the same contents directly by using the [`current_cases`]( ### `get_all_cases` ```python -def get_all_cases(parametrization_target: Callable = None, - cases: Union[Callable, Type, ModuleRef] = None, +CaseType = Union[Callable, Type, ModuleRef] + +def get_all_cases(parametrization_target: Callable, + cases: Union[CaseType, List[CaseType]] = None, prefix: str = 'case_', glob: str = None, has_tag: Union[str, Iterable[str]] = None, diff --git a/src/pytest_cases/case_parametrizer_new.py b/src/pytest_cases/case_parametrizer_new.py index 1ac9ec43..7ef3319c 100644 --- a/src/pytest_cases/case_parametrizer_new.py +++ b/src/pytest_cases/case_parametrizer_new.py @@ -56,6 +56,7 @@ from types import ModuleType # noqa ModuleRef = Union[str, ModuleType, Literal[AUTO], Literal[THIS_MODULE]] # noqa + CaseType = Union[Callable, Type, ModuleRef] except: # noqa pass @@ -65,7 +66,7 @@ def parametrize_with_cases(argnames, # type: Union[str, List[str], Tuple[str, ...]] - cases=AUTO, # type: Union[Callable, Type, ModuleRef] + cases=AUTO, # type: Union[CaseType, List[CaseType]] prefix=CASE_PREFIX_FUN, # type: str glob=None, # type: str has_tag=None, # type: Any @@ -206,7 +207,7 @@ def _glob_name_filter(case_fun): def get_all_cases(parametrization_target=None, # type: Callable - cases=None, # type: Union[Callable, Type, ModuleRef] + cases=None, # type: Union[CaseType, List[CaseType]] prefix=CASE_PREFIX_FUN, # type: str glob=None, # type: str has_tag=None, # type: Union[str, Iterable[str]]