gpt4 book ai didi

python 带有可选参数的假设检验

转载 作者:太空宇宙 更新时间:2023-11-03 14:16:14 24 4
gpt4 key购买 nike

在我的项目中,我使用假设来测试函数。正在测试的函数接受一个名为 stop 的强制参数和两个分别名为 startstep 的可选参数。如果参数 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

我的问题:我还想模拟这样一个事实:startstep 是可选的,因此这些参数中的一个或两个都设置为 None。如何在不为代码的每个变体重新创建专用测试函数的情况下做到这一点?

最佳答案

您可以像加入集合一样加入策略。示例:

strategy_bools_or_ints = st.booleans() | st.integers()

在测试中,您可以将 st.integersst.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)

关于python 带有可选参数的假设检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48221824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com