问题标签 [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.
django - 不同 Django 模型的相同假设检验
我想使用假设来测试我们为从 Django 模型创建 avro 模式而编写的工具。使用 django extra 为单个模型编写测试非常简单:
...但是如果我要为每个可以被 avro-schema-ified 的模型编写测试,它们将完全相同,除了given
装饰器的参数。我可以获得我有兴趣测试的所有模型,并ContentTypeCache.list_models()
返回一个字典schema_name: model
(是的,我知道,它不是一个列表)。但是我怎样才能生成像
我考虑过基本上动态生成每个测试方法并将其直接附加到全局变量,但这听起来很难理解。如何以尽可能少的混乱动态编程为不同的 django 模型编写相同的基本参数测试?
python - 生成在假设中不重复的唯一 ID
我想生成不重复的唯一 ID。我尝试使用st.uuids()
.
这是我的代码
但是,我重复了 1 次。关于如何避免重复的任何提示?
奇怪的是,我可以在日志语句上方的日志语句中看到该 id。
我想知道@cacheable
or@defines_strategy_with_reusable_values
是否与它有关
https://github.com/HypothesisWorks/hypothesis/blob/cedbafe52934e5f710be41c51044388ef3047850/hypothesis-python/src/hypothesis/strategies.py#L1868
python-hypothesis - 如何增加或减少假设的片状重试?
如果测试示例最初失败,假设尝试测试示例 3 次。
例如
Flaky:假设......产生不可靠的结果:在第一次调用时被伪造,但在随后的调用中没有
有没有办法增加或减少尝试次数?
python - 带有可选键的字典策略
目前我正在使用假设 fixed_dictionaries 策略来生成具有特定键和数据类型的字典,这些键和数据类型被认为对我的应用程序有效。我需要一种策略来生成此固定字典以及删除特定键的其他字典。或者是一个字典,其中包含一组最小的键和可选的附加键,最好以产生这些可选键的各种组合的方式。
这是一个需要验证的 json 模式示例,带有 2 个可选字段。我想为此模式生成所有可能的有效数据。
这是我想出的,但这是不正确的,因为它保留了键但使用 None 作为值,而我希望删除键。
编辑:更新的复合策略->
似乎最好根据返回的数据类型分离额外的可选字典,否则可能会得到值不匹配的键。
python-hypothesis - 当行元组具有不同的数据类型时,对假设生成的数据帧进行排序
我想创建 End 大于 Start 的数据框。
我这样做:
这使
但是,我想将第三列 Strand 添加到数据中,如使用上述策略生成的那样。然后这停止工作:
它给出了错误
这是由于 int 和 strs 的元组排序。我该如何解决?
我可以要求假设生成一个带有 pos、pos、strand_int 的数据帧,其中 strand_int 为 0 或 1,并在测试中将其转换为“-”或“+”,但感觉很恶心。
python-hypothesis - 如何在假设中设置数据帧的最小和最大长度?
我有以下使用基因组数据创建数据框的策略:
我对空数据帧并不感兴趣,因为它们是无效的,我还想生成一些非常长的 dfs。如何更改为测试用例创建的数据框的大小?即最小尺寸1,平均尺寸大?
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
?
python - Python假设:确保输入列表具有相同的长度
我正在使用假设来测试一个将两个长度相等的列表作为输入的函数。
这给了我错误信息:
FailedHealthCheck:您的策略似乎过滤掉了大量数据。健康检查发现了 50 个过滤示例,但只有 4 个好的示例。
len(x) == len(y)
过滤掉太多输入的假设。所以我想生成一个随机正数并将其用作 和 的x
长度y
。有没有办法做到这一点?
property-based-testing - 如何在 Python 假设中递归地生成布尔表达式?
一般来说,我是 Python 的假设库和基于属性的测试的新手。我想使用以下语法生成任意嵌套的策略表达式:
((A和B)或C)
我觉得递归策略是我想要的,但我很难理解如何使用它。我拥有的代码似乎只生成一个“级别”的表达。这是我所拥有的:
如何使用 Hypothesis 生成任意嵌套的策略表达式?