为了账号安全,请及时绑定邮箱和手机立即绑定

Python Hypothesis 包:我可以确保使用某些值吗?

Python Hypothesis 包:我可以确保使用某些值吗?

DIEA 2023-09-05 17:27:22
问题陈述下面是一个与我想做的事情很接近的玩具示例。@given(    idx_start=integers(min_value=0, max_value=100000),    idx_window=integers(min_value=0, max_value=100000),)def test_calc_max(conftest_df, idx_start, idx_window):    row_idxs = conftest_df.index[idx_start : (idx_start + idx_window)]    assert calc_max(conftest_df.loc[row_idxs, "my_column"]) >= 0conftest_df是我在固定文件中提供的数据框conftest.py,它代表我用于包的真实数据的一部分。该数据帧中的值很少。 NaN我想使用它hypothesis,因为它非常棒,而且我坚信这是正确的做事方式。但我还想确保测试中的方法和函数适用于 NaN。我真的不想只说NaNs,将来可能会出现其他内容(例如,使用逗号而不是句点来表示小数的数字)。理想的解决方案通过hypothesis我宁愿能够做这样的事情:@given(    idx_start=integers(min_value=0, max_value=100000, includes=[5, 4000, 80000]),    idx_window=integers(min_value=0, max_value=100000, includes=[20]),)...并且有办法确保通过参数考虑某些值includes。我知道这hypothesis会跟踪失败的值,但根据我的经验,它似乎并不能保证它们的使用。有没有办法做我想做的事?
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

您可以使用@example装饰器来确保某些示例正在被测试。

这是假设快速入门指南中的示例:

from hypothesis import given, example

from hypothesis.strategies import text


@given(text())

@example('')

def test_decode_inverts_encode(s):

    assert decode(encode(s)) == s

这里,@example('')以确保测试将使用空字符串运行为例。


我还没有完全理解你的场景的细节,但也许你可以根据自己的需要调整这个例子。


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信