【问题标题】:hypothesis always returns the minimum value假设总是返回最小值
【发布时间】:2019-09-20 03:36:35
【问题描述】:

我正在用假设做一个小测试,同时考虑以后更广泛地使用它。

我尝试让我的测试获得一个介于 0 和 25 之间的整数的参数。我做了以下操作:

from hypothesis import given
from hypothesis.strategies import integers

@given(x=integers(0, 24))
def test_random(self, x):
    print(x)

但是x总是设置为0,所以我尝试了:

@given(x=integers(1, 24))
def test_random(self, x):
    print(x)

它总是设置为 1,表明它总是取最小值。 我在做什么错\我在哪里可以将其配置为随机的?

编辑:假设版本:hypothesis==4.18.3

【问题讨论】:

  • 你能展示你所有的进口吗?您使用的是什么版本的假设和 python?你怎么称呼测试?
  • 已编辑,我直接从 pycharm 运行它
  • 当我复制并粘贴您的代码并自己运行它时,我得到了预期的行为。您可以发布更多上下文吗?我看到你使用了self 参数,这让我相信这至少是一个类的方法。
  • 很好,问题确实是 self 对象(在一个不相关的函数中对其进行了测试并且它有效)。问题是我有多重继承并且在我的测试类中发生了很多事情。我如何调试并知道是什么原因造成的?有什么我应该看的具体内容(可能会覆盖某些内容)吗?
  • 如果没有看到自己的代码,我将无法提出任何建议

标签: python hypothesis-test python-hypothesis


【解决方案1】:

这似乎是假设的继承问题。我尝试将测试函数放在我继承的每个类中,当我到达 base (直接从 unittest.TestCase 继承)时,它起作用了。启动一个从 base 继承且仅具有该测试功能的新测试类,导致了同样的问题。感觉像个bug

Hypothesis 维护者在这里 - 请用base 的定义打开一个问题,以便我们调试它。它绝对应该工作,我只是在unittest.TestCase 的孙子类上尝试了这个,没有发现任何问题。

很遗憾,在您分享复制示例之前,我们无法为您提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2020-08-02
    • 1970-01-01
    • 2015-12-02
    • 2021-02-15
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多