Les stratégies d'hypothèses intégrées sont fournies via des fonctions (par exemple, plutôt qu'une stratégie réelle, integers
est une fonction qui crée une stratégie). Cela me suggère que les objets de la stratégie ont un état interne.Dois-je instancier des stratégies d'hypothèses utilisées par plusieurs tests?
@given(integers())
def test_foo(n):
assert n > 0
@given(integers())
def test_bar(n):
assert n < 100
Dans les deux tests faux ci-dessus, chaque test obtient un objet de stratégie différente (de différentes invocations de integers
Si je puis créer ma propre stratégie comme ceci:.
positive_integers = integers().filter(lambda x: x > 0)
... utilisez pour les mêmes tests.
@given(positive_integers)
def test_foo(n):
assert n > 0
@given(positive_integers)
def test_bar(n):
assert n < 100
Ils partagent le même objet stratégie Cela me semble que cela pourrait être mal, mais c'est la façon dont le examples in the docs le faire en s quelques cas (voir la définition de NodeStrategy
et NodeSet
). Dois-je éviter cela en enveloppant la composition de stratégie dans une fonction comme:
positive_integers = lambda: integers().filter(lambda x: x > 0)
#...
@given(positive_integers())