【问题标题】:How to start test cases starting from max_value instead of min_value for a Hypothesis strategy?对于假设策略,如何从 max_value 而不是 min_value 开始测试用例?
【发布时间】:2020-02-15 14:16:37
【问题描述】:

我是 Hypothesis 的新手,我想测试一个从 Hypothesis Strategy 获取整数输入的函数:

@given(strategy.integers(min_value=2, max_value=9))
def test_function(t):
    #...

假设检验从 min_value 2 到 9 的函数。

有什么办法可以扭转这种情况吗? 我希望测试用例以 t=9 而不是 t=2 开始。

【问题讨论】:

    标签: python unit-testing testing property-based-testing python-hypothesis


    【解决方案1】:

    通常策略会随机选择它们的值。因此,您的属性(即测试用例)永远不应该依赖于特定的值顺序。

    大多数时候,测试方法的每次调用都应该完全独立于任何之前或之后的调用。如果您的测试方式需要依赖项,请告诉我们更多关于您正在测试什么以及如何测试,以便可以推荐一种测试方法。

    【讨论】:

    • 感谢您的回复。我想找到在进行接口调用后断言成功所需的最小延迟。所以我希望测试用例从 max_value 时间开始,然后向 min_value 前进,直到它开始失败。截至目前,由于测试用例以 min_value 开头,它显然在 t=0 或 t=2 时失败。那么有什么方法可以找到时间的边界值呢?
    • 另外,测试方法调用之间没有依赖关系。
    • 我想我不会为此目的使用假设。我宁愿自己倒计时,然后从 main 运行测试方法。
    • 我想为此目的使用假设和基于属性的测试。那么就没有别的办法了吗?
    • 据我了解,您还没有找到可以使用 PBT 检查的属性。您所描述的测试用于找到一个阈值作为属性不变量的候选者。这与提出一个应该成立的不变量并让假设找出它是否为真不同。这就是 IMO 假设在这里不适合的原因。但也许我弄错了你的意图?
    【解决方案2】:

    假设检验从 min_value 2 到 9 的函数。

    不,假设首先测试最小输入,然后以随机顺序测试其他输入。

    如果测试用例的顺序很重要,那么显式循环是比基于属性的测试更好的选择。

    【讨论】:

    • 感谢您的指导。我现在更好理解了:)
    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多