Add a `@parameterized.named_product` which combines both `named_parameters` and `product` together.
Named Parameterized Test Cases of a Cartesian Product
======================================================
Both `named_parameters` and `product` have useful features.
However, when using both, it can be difficult to ensure that generated test
cases retain useful names.
Here, we combine both approaches to create parameterized tests with both
generated permutations and human-readable names.
Example:
```python
@parameterized.named_product(
[
dict(
testcase_name='five_mod_three_is_2',
num=5,
modulo=3,
expected=2,
),
dict(
testcase_name='seven_mod_four_is_3',
num=7,
modulo=4,
expected=3,
),
],
[
dict(testcase_name='int', dtype=int),
dict(testcase_name='float', dtype=float),
]
)
def testModuloResult(self, num, modulo, expected, dtype):
self.assertEqual(expected, dtype(num) % modulo)
This would generate the test cases:
testModuloResult_five_mod_three_is_2_int
testModuloResult_five_mod_three_is_2_float
testModuloResult_seven_mod_four_is_3_int
testModuloResult_seven_mod_four_is_3_float
```
PiperOrigin-RevId: 824463104
This repository is a collection of Python library code for building Python applications. The code is collected from Google's own Python code base, and has been extensively tested and used in production.
To install the package, simply run:
pip install absl-py
Or install from source:
pip install .
To run Abseil tests, you can clone the git repo and run bazel:
git clone https://github.com/abseil/abseil-py.git cd abseil-py bazel test absl/...
Please also validate the type annotations against the latest mypy:
pip install mypy
mypy absl
Please refer to smoke_tests/sample_app.py as an example to get started.
See the Abseil Python Developer Guide.
The current repository includes an initial set of libraries for early adoption. More components and interoperability with Abseil C++ Common Libraries will come in future releases.
The Abseil Python library is licensed under the terms of the Apache license. See LICENSE for more information.