问题标签 [python-hypothesis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2836 浏览

pytest - Flaky: Hypothesis test 产生不可靠的结果是什么意思?

我正在使用假设 python 包进行测试。

我收到以下错误:

不稳定:假设 test_visiting 产生不可靠的结果:在第一次调用时被伪造,但在随后的调用中没有

据我所知,测试工作正常。

我该如何解决这个问题?

0 投票
1 回答
451 浏览

python - 没有评估平面图的假设

我试图调整文档的示例

生成 3 个整数的元组,其中 2/3 以另一个整数为界,

但是在运行时,我得到了这个不幸的堆栈跟踪:

我尝试摆弄它并附加.example(),并发现删除内部策略并替换为n,例如,工作,但是一旦我开始使用n作为内部策略的命名参数tuples(),我就会得到错误。

该示例确实有效,但我看不出我在做什么不同。

0 投票
1 回答
1113 浏览

python - 如何在同一个测试用例中使用假设和基于 pytest-tornado 产量的测试?

我正在编写使用Tornado库的代码的py.test测试。如何在涉及协程和 IOLoop 的测试中使用Hypothesis ?通过使用pytest-tornado ,我已经能够在没有 Hypothesis 的情况下编写基于产量的测试,但是当我尝试将它与 结合时,我收到以下错误:@pytest.mark.gen_test@given

FailedHealthCheck:在下运行的测试@given应该返回None,而是test_both返回<generator object test_both at 0x7fc4464525f0>

有关这方面的更多信息,请参阅http://hypothesis.readthedocs.org/en/latest/healthchecks.html。如果您只想禁用此运行状况检查,请添加到此测试HealthCheck.return_value的设置中。suppress_health_check

考虑到假设文档说,我非常有信心这是一个真正的问题,而不仅仅是禁用健康检查的问题

基于产量的测试根本行不通。

这是演示我的情况的代码:

test_hypothesis并且test_tornado工作正常,但我得到了错误,test_both因为我yield一起使用和假设。

改变装饰器的顺序并没有改变任何东西,可能是因为gen_test装饰器只是一个属性标记。

我可以使用 Hypothesis 编写基于 Tornado 的代码的测试吗?如何?

0 投票
3 回答
1832 浏览

python - 使用假设生成具有自定义值限制的列表列表

故事:

目前,我有一个被测函数,它需要一个具有以下规则的整数列表列表:

  1. 子列表的数量(我们称之为N)可以从 1 到 50
  2. 子列表中的值的数量对于所有子列表(矩形形式)都是相同的,并且应该 >= 0 和 <= 5
  3. 子列表中的值不能大于或等于子列表的总数。换句话说,子列表中的每个值都是一个整数 >= 0 并且 <N

样本有效输入:

示例无效输入:

我正在尝试使用基于属性的测试来处理它,并使用hypothesis生成不同的有效输入,并试图将我的头绕在lists()andintegers()上,但无法使其工作:

  • 条件 #1 很容易用lists()andmin_sizemax_size参数处理
  • 条件 #2 涵盖在Chaining strategies together
  • 条件 #3 是我正在努力解决的问题 - 因为,如果我们使用rectangle_lists上面示例中的,我们没有对内部“父”列表长度的引用integers()

问题:

如何将子列表中的整数值限制为小于子列表的总数?


我的一些尝试:

这远远不能满足要求 - 列表不是严格的矩形形式,并且生成的整数值可以超过列表的生成大小。

在这里,#1 和 #2 是满足要求,但整数值可以大于列表的大小 - 不满足要求 #3。

0 投票
1 回答
933 浏览

python - 在假设中跳过伪造的例子

故事:

我目前正在使用hypothesis自定义生成策略对函数进行单元测试,试图找到一个特定的输入来“破坏”我当前的解决方案。这是我的测试的样子:

answer()基本上,当函数不返回 0 或 1 或 2时,我正在寻找可能的输入。

这是我当前的工作流程的样子:

  • 运行测试
  • hypothesis找到一个产生 的输入AssertionError

    /li>
  • 使用此特定输入调试函数,尝试了解此输入/输出是否合法并且该函数是否正常工作

问题:

我怎样才能跳过这个伪造的生成示例([[0], [1]]在这种情况下)并要求hypothesis生成一个不同的示例?


该问题也可以解释为:hypothesis如果发现伪造示例,我可以要求不终止并生成更多伪造示例吗?

0 投票
2 回答
718 浏览

python - Random sampling with Hypothesis

In Hypothesis, there is an corresponding sampled_from() strategy to random.choice():

But, is there a way to have random.sample()-like strategy to produce subsequences of length N out of a sequence?

0 投票
1 回答
1002 浏览

python-hypothesis - 从正则表达式生成字符串数据

我希望能够采用正则表达式并使用 python 假设库生成符合要求的数据。例如给定一个正则表达式

这将匹配任何英文字母字符。一个示例生成器可能是。

但理想情况下,我想构造一个与传入的任何正则表达式匹配的字符串。

0 投票
2 回答
933 浏览

python - Python 假设:如何组成相互依赖的生成器?

我有一个使用 python 假设的生成器,如下所示:

上面的每个函数都返回如下内容:

我在reorder值和delay重新排序中的值之间存在依赖关系,只有在延迟不是时才能指定None

我不知道如何做到这一点。过滤似乎遇到了性能问题。在代码中的这一点上,该delay值还不是一个具体的值。

0 投票
1 回答
1386 浏览

python - 生成带有假设的随机对象列表

我需要在 python 中测试一个函数,该函数接受一个包含任何类型数据的列表,从整数到字符串再到用户组成的任何对象。有没有办法在假设中生成一个包含随机对象的列表?我知道我可以生成一个随机浮点列表

整数,字符等等等等等。但是我怎样才能使随机列表具有不止一种数据类型呢?

0 投票
1 回答
697 浏览

python - Python假设-为许多测试构建一次策略?

我有一个复合的、构建成本高但测试成本低的策略。我必须这样做:

构建示例大约需要 4 秒,而运行断言的时间可以忽略不计。

最佳实践要求将这些测试分开。

我不清楚如何结合假设策略和例如。TestCase.setUp 或 pytest 会话范围的固定装置。装饰夹具和调用x = expensive_strategy(); @given(x)都无济于事。