问题标签 [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 回答
269 浏览

django - 不同 Django 模型的相同假设检验

我想使用假设来测试我们为从 Django 模型创建 avro 模式而编写的工具。使用 django extra 为单个模型编写测试非常简单:

...但是如果我要为每个可以被 avro-schema-ified 的模型编写测试,它们将完全相同,除了given装饰器的参数。我可以获得我有兴趣测试的所有模型,并ContentTypeCache.list_models()返回一个字典schema_name: model(是的,我知道,它不是一个列表)。但是我怎样才能生成像

我考虑过基本上动态生成每个测试方法并将其直接附加到全局变量,但这听起来很难理解。如何以尽可能少的混乱动态编程为不同的 django 模型编写相同的基本参数测试?

0 投票
1 回答
317 浏览

python - 生成在假设中不重复的唯一 ID

我想生成不重复的唯一 ID。我尝试使用st.uuids().

这是我的代码

但是,我重复了 1 次。关于如何避免重复的任何提示?

奇怪的是,我可以在日志语句上方的日志语句中看到该 id。

我想知道@cacheableor@defines_strategy_with_reusable_values是否与它有关 https://github.com/HypothesisWorks/hypothesis/blob/cedbafe52934e5f710be41c51044388ef3047850/hypothesis-python/src/hypothesis/strategies.py#L1868

0 投票
1 回答
88 浏览

python-hypothesis - 如何增加或减少假设的片状重试?

如果测试示例最初失败,假设尝试测试示例 3 次。

例如

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

有没有办法增加或减少尝试次数?

0 投票
2 回答
1607 浏览

python - 带有可选键的字典策略

目前我正在使用假设 fixed_dictionaries 策略来生成具有特定键和数据类型的字典,这些键和数据类型被认为对我的应用程序有效。我需要一种策略来生成此固定字典以及删除特定键的其他字典。或者是一个字典,其中包含一组最小的键和可选的附加键,最好以产生这些可选键的各种组合的方式。

这是一个需要验证的 json 模式示例,带有 2 个可选字段。我想为此模式生成所有可能的有效数据。

这是我想出的,但这是不正确的,因为它保留了键但使用 None 作为值,而我希望删除键。

编辑:更新的复合策略->

似乎最好根据返回的数据类型分离额外的可选字典,否则可能会得到值不匹配的键。

0 投票
2 回答
257 浏览

python-hypothesis - 当行元组具有不同的数据类型时,对假设生成的数据帧进行排序

我想创建 End 大于 Start 的数据框。

我这样做:

这使

但是,我想将第三列 Strand 添加到数据中,如使用上述策略生成的那样。然后这停止工作:

它给出了错误

这是由于 int 和 strs 的元组排序。我该如何解决?

我可以要求假设生成一个带有 pos、pos、strand_int 的数据帧,其中 strand_int 为 0 或 1,并在测试中将其转换为“-”或“+”,但感觉很恶心。

0 投票
1 回答
300 浏览

python-hypothesis - 如何在假设中设置数据帧的最小和最大长度?

我有以下使用基因组数据创建数据框的策略:

我对空数据帧并不感兴趣,因为它们是无效的,我还想生成一些非常长的 dfs。如何更改为测试用例创建的数据框的大小?即最小尺寸1,平均尺寸大?

0 投票
1 回答
1482 浏览

python-hypothesis - 如何在假设中使用复合策略(hypothesis.errors.InvalidArgument:Expected SearchStrategy but got function)

此示例是文档中示例的变体:

它失败:

我究竟做错了什么?

0 投票
1 回答
387 浏览

python-hypothesis - 使用 pytest.raises 的假设状态测试不报告步骤顺序

我想写一个hypothesis.stateful.RuleBasedStateMachine断言在某些情况下引发异常的语句。为编写有关异常的测试pytest提供上下文管理器。raises如果我pytest.raises在 a中使用,则不会报告hypothesis.stateful.rule导致测试失败的步骤序列。

重写规则而不pytest.raises产生所需的行为:显示步骤顺序。

这是一些示例代码:

要观察行为的差异,请执行测试

  • SHOW_PROBLEM=yes pytest <...>
  • SHOW_PROBLEM=no pytest <...>

在第二种情况下,输出将显示

在第一种情况下,输出中缺少此步骤序列。这是我们所希望的:在这两种情况下都应该显示序列。

pytest.raises提高Failed: DID NOT RAISE <class 'ValueError'>手写版本提高AssertionError。前者在未能引发所需异常时提供更多信息,但不知何故似乎阻止hypothesis.stateful报告步骤顺序,这告诉我们如何进入该状态,并且通常是输出中最有趣的部分。

可以做些什么来减轻这种情况,即确保打印出步骤顺序,除了不使用pytest.raises

0 投票
3 回答
1517 浏览

python - Python假设:确保输入列表具有相同的长度

我正在使用假设来测试一个将两个长度相等的列表作为输入的函数。

这给了我错误信息:

FailedHealthCheck:您的策略似乎过滤掉了大量数据。健康检查发现了 50 个过滤示例,但只有 4 个好的示例。

len(x) == len(y)过滤掉太多输入的假设。所以我想生成一个随机正数并将其用作 和 的x长度y。有没有办法做到这一点?

0 投票
2 回答
218 浏览

property-based-testing - 如何在 Python 假设中递归地生成布尔表达式?

一般来说,我是 Python 的假设库和基于属性的测试的新手。我想使用以下语法生成任意嵌套的策略表达式:

((A和B)或C)

我觉得递归策略是我想要的,但我很难理解如何使用它。我拥有的代码似乎只生成一个“级别”的表达。这是我所拥有的:

如何使用 Hypothesis 生成任意嵌套的策略表达式?