2017-03-22 9 views
0

に依存している発電機を構成するIは戻り、上記の各機能私は間の依存関係を有するPythonの仮説互いに

@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()) 

ような以下

@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)) 

ようPythonの仮説を用いて発電機を有しますその再注文のreorder値とdelay値は、遅延がNoneでない場合にのみ指定できます。

これを行う方法がわからない。フィルタリングはパフォーマンスの問題に繋がっているようです。そしてコードのこの時点では、delayの値はまだ具体的な値ではありません。

答えて

0

遅延を1つの例でグローバルに1回だけ指定したい場合(つまり、テスト関数を呼び出すたびに1つの値に固定されますが、異なる呼び出し間で異なる可能性があります)、sharedを使用するとできますか? https://hypothesis.readthedocs.io/en/latest/data.html#hypothesis.strategies.shared

つまり、遅延=共有(my_base_strategy、key = 'network.delay')のようなものを実行すると、遅延に依存する他のすべての戦略はそれから引き出し、単一の一貫した値を得ることができます。

関連する問題