내장 된 가설 전략은 기능을 통해 제공됩니다 (예 : 실제 전략보다는 integers
은 전략을 만드는 기능 임). 그것은 나에게 전략 목표가 내부 상태임을 시사한다. 위의 두 가짜 테스트에서여러 테스트에서 사용되는 가설 전략을 인스턴스화해야합니까?
@given(integers())
def test_foo(n):
assert n > 0
@given(integers())
def test_bar(n):
assert n < 100
는 각 테스트는 integers
의 다른 호출에서 다른 전략 객체를 (얻는다 나는 다음과 같은 내 자신의 전략 만드는 경우 :. 다음 사용 ...
positive_integers = integers().filter(lambda x: x > 0)
을 이 같은 시험 :.
@given(positive_integers)
def test_foo(n):
assert n > 0
@given(positive_integers)
def test_bar(n):
assert n < 100
그들은 같은 전략 객체를 공유 잘못 될 수있는 것처럼이 나에게 소리,하지만 examples in the docs이의 그것을 수행 방법 오메 경우 (NodeStrategy
및 NodeSet
의 정의 참조). 내가 같은 함수의 전략 구성을 포장하여이를 피해야한다 :
positive_integers = lambda: integers().filter(lambda x: x > 0)
#...
@given(positive_integers())