The Nengo team at ABR is excited to announce the first release of
pytest-rng is made available under the open source MIT license so that all Python projects can make use of it to better test their numerical code.
What is pytest-rng?
pytest-rng ensures that “randomness” in your tests is reproducible from one run to the next by providing
seed fixtures for pytest.
rng fixture to get a pre-seeded random number generator (RNG) that exposes NumPy’s
import numpy as np def test_with_randomness(rng): """Print the same three numbers every time.""" print(rng.uniform(-1, 1), size=3))
seed fixture to get an integer seed that can be used to initialize your own RNG.
import numpy as np def test_with_randomness(seed): """Print the same four numbers every time.""" print(seed) rng = np.random.RandomState(seed) print(rng.uniform(-1, 1), size=3))
In order to ensure that your tests are robust to different seeds, you can change all of the seeds across all of your tests by specifying a
salt value. You can do this either in a configuration file like
[tool:pytest] rng_salt = v0.3.0
or via the command line
pytest --rng-salt "v0.4.0"
How do I use it?
To use the fixture, first install it with
pip install pytest-rng
then you can use it in your tests by putting
seed in the function signature, like other pytest fixtures. We recommend you add
pytest-rng your list of test requirements as well.
Where can I learn more?
For more details and advanced usage, see the full documentation.
Where can I get help?
If you have any questions, run into any bugs, or have suggestions for new features, please file an issue on Github.