Add chex.variants pytest example #433
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds a comprehensive example file demonstrating how to properly use
chex.variantswith parametrization in pytest. This addresses a common confusion point for users trying to combinechex.variantswith test parametrization.Motivation
Many users encounter issues when attempting to use
pytest.mark.parametrizewithchex.TestCasebecause:chex.variantsrequires test classes to inherit fromchex.TestCase(which usesunittest.TestCase)pytest.mark.parametrizedoes NOT work withunittest.TestCasesubclassesRelated to issue #382
What's Included
The new file
chex/_src/variants_pytest_example.pycontains four complete test class examples:1. TestBasicVariants
@chex.variantswithwith_jitandwithout_jit@self.variantdecorator2. TestCombinedParametrize
@chex.variantsMUST be the OUTSIDE decorator (applied first)absl.testing.parameterized(which works with unittest)3. TestMultipleVariants
4. Additional examples
Key Takeaways
✅ DO: Use
⚠️ IMPORTANT:
absl.testing.parameterizedwithchex.variants❌ DON'T: Use
pytest.mark.parametrizewithchex.TestCase@chex.variantsmust be the outer decoratorUsage
Run the examples with:
Testing
All examples have been tested and run successfully with pytest, demonstrating the correct patterns for combining variants with parametrization.
Checklist