我如何在假设中使用复合策略(hypothesis.errors.InvalidArgument:预期的 SearchStrategy 但得到了功能)
How do I use composite strategies in hypothesis (hypothesis.errors.InvalidArgument: Expected SearchStrategy but got function)
此示例是 docs 中示例的变体:
import hypothesis.strategies as st
from hypothesis import given
@st.composite
def s(draw):
x = draw(st.text(), min_size=1)
y = draw(st.text(alphabet=x))
return (x, y)
@given(s1=s, s2=s)
def test_subtraction(s1, s2):
print(s1, s2)
assert 0
失败:
E hypothesis.errors.InvalidArgument: Expected SearchStrategy but got <function accept.<locals>.s at 0x7fd7e5c05620> (type=function)
/mnt/work/unfuncat/software/anaconda/lib/python3.6/site-packages/hypothesis/internal/validation.py:40: InvalidArgument
我做错了什么?
您需要调用复合函数。这在文档中没有解释,但在 2016 blog post 中有一个示例。
@given(s1=s(), s2=s()) # <===== change
def test_subtraction(s1, s2):
print(s1, s2)
assert 0
此示例是 docs 中示例的变体:
import hypothesis.strategies as st
from hypothesis import given
@st.composite
def s(draw):
x = draw(st.text(), min_size=1)
y = draw(st.text(alphabet=x))
return (x, y)
@given(s1=s, s2=s)
def test_subtraction(s1, s2):
print(s1, s2)
assert 0
失败:
E hypothesis.errors.InvalidArgument: Expected SearchStrategy but got <function accept.<locals>.s at 0x7fd7e5c05620> (type=function)
/mnt/work/unfuncat/software/anaconda/lib/python3.6/site-packages/hypothesis/internal/validation.py:40: InvalidArgument
我做错了什么?
您需要调用复合函数。这在文档中没有解释,但在 2016 blog post 中有一个示例。
@given(s1=s(), s2=s()) # <===== change
def test_subtraction(s1, s2):
print(s1, s2)
assert 0