假设重复相同的值

hypothesis repeats the same values

我是假设的新手并尝试了这个简单的代码:

@settings(max_examples=5) 
@given(st.integers(), st.integers(), st.integers(), st.integers()) 
def test_foo(a,b,c,d): 
    print(a,b,c,d) 

如您所见,test_foo 收到 4 个不同的整数。我 运行 foo 5 次 这是打印结果:

0 0 0 0
0 0 0 0
-2070532028 -5212 -20927 14943
0 0 0 0
0 0 0 0

此测试的 5 次中有 4 次 运行,它 运行 有 4 个零。这不是偶然的,每次我 运行 test_foo 我得到相同的结果:3-4 运行s 有 4 个零和 1-2 运行s 有非零

如何获取更多变体参数?

解决这个问题的唯一方法就是运行(很多)五个以上的例子!

假设并不能保证它只会产生任何特定的输入一次,事实上我们必须产生一些副本来检查不稳定的测试。我们也更喜欢在最有效的时候尽早探索各种简单的例子。为什么你看到这个特定模式的实现细节很复杂,所以我只想说,如果你 运行 使用默认的 100 个示例,那将不是问题。