【问题标题】:How to parameterize a non-deterministic function in pytest?如何在pytest中参数化一个非确定性函数?
【发布时间】:2020-03-17 11:54:14
【问题描述】:

假设我有一个从列表中返回随机项的函数:

def get_item(L):
    if not L: return None
    return random.choice(L)

如何使用parameterizationpytest 来测试这两种情况?

【问题讨论】:

  • 为什么要精确测试?我建议你看看模拟和控制反转
  • random.choice 并不是真正随机的,一旦你知道种子,它就是确定性的。所以你总能得到基本事实。

标签: python testing pytest


【解决方案1】:

你可以很容易地传入参数来给出确定的结果:

result = get_item(None)
assert result is None

result = get_item([42])
assert result == 42

random.seed(1)
result = get_item([1,2,3])
assert result == 1

【讨论】:

  • get_item([1,2,3]) 呢?
  • 使用random.seed(1) 看看会发生什么。每次都坚持这一点。
猜你喜欢
  • 2023-02-21
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 2023-02-19
相关资源
最近更新 更多