我有一个使用 python 假设的生成器,如下所示:
@st.composite
def generate_network_fault_only(draw):
fault = {
"impaired": st.just(True), # need to detect if all faults are None to switch this back.
"limit": draw(NetworkFaultGen.generate_limit()),
"delay": draw(NetworkFaultGen.generate_delay()),
"loss_random": draw(NetworkFaultGen.generate_loss_random()),
"corrupt": draw(NetworkFaultGen.generate_corrupt()),
"duplicate": draw(NetworkFaultGen.generate_duplicate()),
"reorder": draw(NetworkFaultGen.generate_reorder()),
"rate": draw(NetworkFaultGen.generate_rate())
}
return draw(st.fixed_dictionaries(fault))
上面的每个函数都返回如下内容:
@st.composite
def generate_reorder(draw):
"""
This must only happen if delay is applied
"""
return st.one_of(st.fixed_dictionaries(
{"percent": st.integers(min_value=0, max_value=100),
"correlation": st.integers(min_value=0, max_value=100),
"distance": st.integers(min_value=0)}),st.none())
我在reorder
值和delay
重新排序中的值之间存在依赖关系,只有在延迟不是时才能指定None
。
我不知道如何做到这一点。过滤似乎遇到了性能问题。在代码中的这一点上,该delay
值还不是一个具体的值。