我编写了一项测试以验证给定功能的行为正确,对于指定为输入的列表的任何给定置换。
使用hypothesis
Python软件包,我尝试构建此测试用例。但是,生成的排列列表包含许多重复的测试用例。
例如,使用3个项目列表(['a', 'b', 'c']
(,我希望排列列表中有6个条目(ABC,ACB,BAC,BCA,BCA,CAB,CBA(,但事实并非如此。
以下是MWE,假设您有假设包:
from hypothesis import given
from hypothesis.strategies import permutations
@given(permutations(['a', 'b', 'c']))
def test(permutation):
print(permutation)
test()
另外,该代码是在repl.it上进行的。
不幸的是,文档并没有启发我,但也许我不在正确的位置。
对我做错了什么的想法?
您没有做错任何事情,这就是假设的工作方式。它不能(也不能(保证它不会生成重复的元素。它尽了最大的努力来降低其频率,但总的来说,这是不可能的,而且问题很少提出更复杂的策略,因此不值得特别套管可能的少数情况。
如果一组可能的示例足够小,您可以详尽地枚举它,对您来说确实很重要,那么您可能会找到诸如pytest.mark.mark.parametrize更适合的东西。