我已经使用hypothesis
已有一段时间了。我想知道如何重用@given parts
。
我有一些像20行,我将整个@given
部分复制到几个测试用例之上。
一个简单的测试示例
@given(
some_dict=st.fixed_dictionaries(
{
"test1": st.just("name"),
"test2": st.integers()
}
)
)
def test_that uses_some_dict_to_initialize_object_im_testing(some_dict):
pass
重新使用@given
块的最佳方法是什么?
答案 0 :(得分:2)
另一种选择是将策略存储为可重用的全局变量,例如。
a_strategy = st.fixed_dictionaries({ "test1": st.just("name"), "test2": st.integers()})
@given(some_dict=a_strategy)
def test_uses_some_dict_to_initialize_object_im_testing(some_dict):
pass
@given(some_dict=a_strategy, value=st.integers())
def test_other(some_dict, value):
...
等...,策略被设计为可以相互组合的对象,将它们划分为子策略并如此重复使用是没有错的。
timezones示例显示了该模式,它定义了aware_datetimes
策略并在多个测试中使用了该策略。
答案 1 :(得分:1)
创建自己的装饰器:
def fixed_given(func):
return given(
some_dict=st.fixed_dictionaries(
{
"test1": st.just("name"),
"test2": st.integers()
}
)
)(func)
@fixed_given
def test_that_uses_some_dict_to_initialize_object_in_testing(some_dict):
pass