1

我对假设不熟悉,并尝试了这个简单的代码:

@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 次运行有 4 个零,1-2 次运行有非零

如何获得更多变体参数?

4

1 回答 1

1

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

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

于 2020-04-06T07:33:41.147 回答