【问题标题】:xfail single hypothesis case using pytest?使用pytest的xfail单一假设案例?
【发布时间】:2019-11-18 08:01:34
【问题描述】:

使用pytest,我将具体参数设置为fail as expected。

我的测试套件使用假设。这是我们知道的一个错误,我们不打算在此版本的 API 中修复。它已经被记录在案,并且修复它所花费的时间不值得目前所需的努力。

很有帮助,假设每次测试套件运行时都会指出此故障,我们已经学会忽略它。显然这很糟糕(尤其是因为它导致我们忽略了我们不应该忽略的其他事情)。

有没有办法告诉 pytest 预期单个参数值的假设失败?我不想完全删除它,因为有一个更大的项目即将修复它。当这种情况发生时,我想假设再次检查这种情况。

我要应用的测试用例定义如下:

@given(inp=st.text(min_size=1))
def test_input(inp):
   ...

我的目标是能够说当inp 等于特定值时,预计会失败。否则,此测试应该通过。

【问题讨论】:

  • 为什么不直接用mark.xfail 标记测试(使用信息丰富的reason)?如果hypothesis 选择失败的示例,则测试将xfail 作为单个实体(无论如何每个示例都没有多个测试),xpassing 如果示例已排序。

标签: python pytest python-hypothesis


【解决方案1】:

您可以有条件地xfail(或类似地skip)迭代

@given(inp=st.text(min_size=1))
def test_input(inp):
    if inp == some_value:
        pytest.xfail("Marking xfail as inp equals some_value")

【讨论】:

  • 作为 Hypothesis 和 pytest 的开发人员,不幸的是,交互不是这样工作的 - 您可以通过使用参数 -s --hypothesis-verbosity=verbose 运行它来检查;而不是跳过或 xfailing 它引发了一个特殊的异常,并且 Hypothesis 像往常一样缩小它。仅使用 @pytest.mark.xfail 作为装饰器效率更高。
  • @ZacHatfield-Dodds - 感谢您提供此信息。
猜你喜欢
  • 2021-11-30
  • 2020-12-28
  • 2021-10-16
  • 1970-01-01
  • 2015-11-01
  • 2023-03-16
  • 1970-01-01
  • 2021-01-09
  • 2018-10-16
相关资源
最近更新 更多