带可选参数的python假设检验
在我的项目中,我使用带可选参数的python假设检验,python,python-3.x,python-hypothesis,Python,Python 3.x,Python Hypothesis,在我的项目中,我使用假设测试函数。 正在测试的函数接受一个名为stop的强制参数和两个分别名为start和step的可选参数。 如果参数步骤为零,则测试代码应触发异常 这是我的测试函数 @given(start=st.integers(min_value=-1000, max_value=1000), stop=st.integers(min_value=-1000, max_value=1000), step=st.integers(min_value=-1000,
假设
测试函数。
正在测试的函数接受一个名为stop
的强制参数和两个分别名为start
和step
的可选参数。
如果参数步骤
为零,则测试代码应触发异常
这是我的测试函数
@given(start=st.integers(min_value=-1000, max_value=1000),
stop=st.integers(min_value=-1000, max_value=1000),
step=st.integers(min_value=-1000, max_value=1000))
@settings(settings(verbosity=Verbosity.verbose))
def test_XXX_for_integer(start, stop, step):
if step == 0:
with raises(ValueError) as excinfo:
_ = myrange3(start, stop, step)
assert 'arg 3 must not be zero' in str(excinfo.value)
else:
output = <some code>
expected = <some output>
assert output == expected
@给定(开始=st.整数(最小值=-1000,最大值=1000),
停止=st.整数(最小值=-1000,最大值=1000),
步长=标准整数(最小值=-1000,最大值=1000))
@设置(设置(verbosity=verbosity.verbose))
def test_XXX_用于_整数(开始、停止、步骤):
如果步骤==0:
将提升(ValueError)作为excinfo:
_=myrange3(开始、停止、步骤)
str(exinfo.value)中的断言“arg 3不能为零”
其他:
输出=
预期=
断言输出==预期值
我的问题:我还想模拟一个事实,即
start
和step
是可选的,因此这些参数中的一个或两个都设置为None
。在不为代码的每个变体重新创建专用测试函数的情况下,如何才能做到这一点?您可以以连接集合的方式连接策略。例如:
strategy_bools_or_ints = st.booleans() | st.integers()
在测试中,您可以将st.integers
与st.none
连接起来:
st_input = st.integers(min_value=-1000, max_value=1000)
st_input_optional = st_input | st.none()
@given(start=st_input_optional, stop=st_input, step=st_input_optional)
def test_XXX_for_integer(start, stop, step):
assert myrange3(stop, start=start, step=step)