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 返回的是策略而不是您想要的对象