Гипотеза повторяет те же значения - PullRequest
1 голос
/ 02 апреля 2020

Я новичок в гипотезе и попробовал этот простой код:

@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

4 из 5 раз, когда этот тест проходил, он выполнялся с 4 нулями. Это не случайно. Каждый раз, когда я запускаю test_foo, я получаю одинаковые результаты: 3-4 прогона с 4 нулями и 1-2 прогона с ненулевыми значениями

Как я могу получить больше вариантов параметров?

1 Ответ

1 голос
/ 06 апреля 2020

Единственное решение этой проблемы - запустить (много) более пяти примеров!

Гипотеза не гарантирует, что она будет выдавать какой-либо конкретный вход только один раз, и фактически мы должны создать несколько дубликатов для проверки на нестабильные тесты. Мы также предпочитаем исследовать множество простых примеров на раннем этапе, когда это наиболее эффективно. Детали реализации того, почему вы видите этот конкретный шаблон, сложны, поэтому я просто скажу, что если вы запустите 100 примеров по умолчанию, это не будет проблемой.

...