Python 假设检验:有没有办法避免绘制 LazyStrategy?
Python Hypothesis testing: Is there a way to avoid drawing a LazyStrategy?
如果 Python hypothesis 策略嵌套太深,使用 draw
将不会创建实际示例,而是 LazyStrategy
。这有时会带来很大的问题,因为生成的对象的行为与实际示例非常不同。
有没有办法强制执行对策略的急切评估,以便始终调用 draw
returns 相应策略的实际示例?
例如:
from hypothesis import strategies as st
@st.composite
def my_composite_strategy(draw):
some_example = draw(some_very_complex_deeply_nested_strategy)
print(type(some_example))
...
如果执行,将打印 <class 'hypothesis.strategies._internal.lazy.LazyStrategy'>
。我想要的是 <class 'my_module.MyObjectIWriteAStrategyFor'>
,这样我就可以像使用真实对象一样使用 some_example
。
根据 https://github.com/HypothesisWorks/hypothesis/issues/3224,您的 some_very_complex_deeply_nested_strategy
返回的是策略而不是您想要的对象
如果 Python hypothesis 策略嵌套太深,使用 draw
将不会创建实际示例,而是 LazyStrategy
。这有时会带来很大的问题,因为生成的对象的行为与实际示例非常不同。
有没有办法强制执行对策略的急切评估,以便始终调用 draw
returns 相应策略的实际示例?
例如:
from hypothesis import strategies as st
@st.composite
def my_composite_strategy(draw):
some_example = draw(some_very_complex_deeply_nested_strategy)
print(type(some_example))
...
如果执行,将打印 <class 'hypothesis.strategies._internal.lazy.LazyStrategy'>
。我想要的是 <class 'my_module.MyObjectIWriteAStrategyFor'>
,这样我就可以像使用真实对象一样使用 some_example
。
根据 https://github.com/HypothesisWorks/hypothesis/issues/3224,您的 some_very_complex_deeply_nested_strategy
返回的是策略而不是您想要的对象