问题标签 [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 投票
1 回答
258 浏览

python-hypothesis - 假设、django 和生成外部 ID

这是我第一次尝试将 Hypothesis 与 Django 一起使用。

对于只能共享代码片段,我提前道歉。这是一个扩展代码库的一小部分。

我有一个模型(在许多其他领域中)有一个 1:1 的外部参考:

我正在尝试制定一个策略来生成这些小部件。我尝试过的几乎所有事情都以“hypothesis.errors.Flaky:不一致的数据生成!不同运行之间的数据生成行为不同。您的数据生成是否取决于外部状态?”

这是一个相当复杂的测试的一部分,它构建了一个相当复杂的相互关联的模型树。在这个特定模型中将故障缩小到这个特定领域需要相当多的时间。实际的异常发生在假设.internal.conjecture.ConjectureData 实例self.observer.conclude_test()从其.freeze()方法内部调用时。在某些变体中,调用堆栈包含一个与我的 @given 参数匹配的元组,但是从那里到正在生成的特定模型(更不用说字段)的转换没有任何似乎对诊断有用的状态。

我正在尝试的基本想法是:

移除字段的unique=True约束允许测试通过,但它破坏了我们的基本假设之一。

指定external_id=st.just(1)无法生成有效示例。

我尝试过的所有其他事情都因一致性错误而失败。

  • st.just(1)
  • st.just(random.randint(MAX_INT32))
  • st.sampled_from(range(1,1000))

问题:

  1. 为该领域定义策略的好方法是什么?
  2. 为了将来参考,有没有一种很好的方法,没有反复试验,可以判断哪个属性的哪个字段失败?

谢谢你。

0 投票
2 回答
1125 浏览

python - 具有不同类型值的字典的假设搜索策略

我正在尝试使用假设模块生成包含不同 python 类型作为值的字典。

对于列表,我可以简单地使用表达式来做到这一点

这给了我[int, str, ...](每个条目不同的python类型)。但是对于字典,我没有unique_by值。

这导致例如{'a': int, 'b': int, ...}→所有条目的值类型相同。

有没有一种简单的方法来生成{'a': int, 'b': str, ..}(至少有两种不同的python类型dict.values())?

0 投票
1 回答
53 浏览

python - 我们可以控制 Hypothesis Python 框架中的测试用例分布吗?

基于属性的框架 QuickCheck 可以通过使用收集和测量实用函数来测量特定测试用例的生成频率(例如:同一个人平均下订单的频率,下空订单的频率)。是否有可能像在 Quickcheck 中一样调整假设框架中基于规则的状态机生成的测试用例的分布?

0 投票
1 回答
110 浏览

python - 复杂策略中的@composite vs flatmap

假设允许两种不同的方式来定义派生策略,@composite并且flatmap。据我所知,前者可以做后者可以做的任何事情。但是,numpy策略的实施arrays,讲了一些隐性成本

我认为这意味着更糟糕的收缩行为,但我不确定,我在其他任何地方都找不到这个记录。那么我应该什么时候使用@composite,什么flatmap时候应该像上面链接的实现那样走这条中途路线?

0 投票
3 回答
326 浏览

python - How to build a strategy to create array of tuples with pairs of identical values?

I'd like to generate a strategy for NumPy testing with an output like:

What I tried was:

Unfortunately, I can't make values inside tuples identical so the query above returns:

0 投票
1 回答
140 浏览

python - 使用假设随机选择文件夹内的文件

我想使用 Hypothesis 库添加测试(已在软件中用于测试)。对于这些测试,我必须使用文件夹中包含的一组 txt 文件。每次运行测试时,我都需要随机选择其中一个文件。如何使用假设来做到这一点?

编辑 这里基本上看起来像,以符合现有测试的模板。

0 投票
1 回答
49 浏览

python-3.x - 如何从具有@given构造函数的函数返回值

  • 在这里,我在一个单独的函数中创建我的测试数据框,以便在所有函数中共同使用它。
  • 然后通过传递由固定给定函数生成的测试数据帧来创建一个 pytest 夹具来实例化一个类。
  • 我正在寻找一种从这个夹具中获取返回值的方法。
  • 但是我使用给定装饰器的问题是,它不允许返回值。
  • 即使使用给定的装饰器,有没有办法返回?
0 投票
1 回答
201 浏览

python - 假设重复相同的值

我对假设不熟悉,并尝试了这个简单的代码:

如您所见, test_foo 接收 4 个不同的整数。我运行 foo 5 次这是打印结果:

该测试运行了 5 次,其中 4 次运行了 4 个零。这不是偶然的,每次我运行时test_foo都会得到相同的结果:3-4 次运行有 4 个零,1-2 次运行有非零

如何获得更多变体参数?

0 投票
1 回答
190 浏览

python - 使用给定的参数化

我想知道是否可以使用given来自 pytestparametrize函数的参数。
例子:

@given(my_strategy(attribute))希望这attribute将是参数化的属性,并在my_strategy每次运行时生成所需的新属性attribute

我怎样才能做到这一点?

0 投票
1 回答
511 浏览

python - 如何更改假设生成的最大测试用例数?

著名的基于属性的测试框架假设能够生成大量的测试用例。

但是有没有办法限制假设生成的测试用例的数量,以缩短测试周期?

例如将特定的关键字参数提供给@given装饰器?