Built-in strategies
===================

This page shows some of the strategies that Hypothesis provides for you.

Strategies provided by Hypothesis
---------------------------------

Here is a selection of strategies provided by Hypothesis that may be useful to know:

|st.integers|
    Generates integers.
|st.floats|
    Generates floats.
|st.booleans|
    Generates booleans.
|st.text|
    Generates unicode strings (i.e., instances of |str|). Can be constrained to ASCII with ``st.text(st.characters(codec="ascii"))``.
|st.lists|
    Generates lists with elements from the strategy passed to it. ``st.lists(st.integers())`` generates lists of integers.
|st.tuples|
    Generates tuples of a fixed length. ``st.tuples(st.integers(), st.floats())`` generates tuples with two elements, where the first element is an integer and the second is a float.
|st.one_of|
    Generates from any of the strategies passed to it. ``st.one_of(st.integers(), st.floats())`` generates either integers or floats. You can also use ``|`` to construct |st.one_of|, like ``st.integers() | st.floats()``.
|st.builds|
    Generates instances of a class (or other callable) by specifying a strategy for each argument, like ``st.builds(Person, name=st.text(), age=st.integers())``.
|st.just|
    Generates the exact value passed to it. ``st.just("a")`` generates the exact string ``"a"``. This is useful when something expects to be passed a strategy. For instance, ``st.lists(st.integers() | st.just("a"))`` generates lists whose elements are either integers or the string ``"a"``.
|st.sampled_from|
    Generates a random value from a list. ``st.sampled_from(["a", 1])`` is roughly equivalent to ``st.just("a") | st.just(1)``.
|st.none|
    Generates ``None``. Useful for parameters that can be optional, like ``st.integers() | st.none()``.

.. seealso::

    See the :doc:`strategies API reference </reference/strategies>` for a full list of strategies provided by Hypothesis.
