изоляция теста между запусками гипотезы pytest

Я только что перенес набор тестов pytest с quickcheck на hypothesis. Это сработало довольно хорошо (и сразу же выявило некоторые скрытые ошибки крайнего случая), но одно важное различие, которое я вижу, связано с изоляцией тестов между двумя менеджерами свойств.

quickcheck, кажется, просто запускает тестовую функцию несколько раз с разными значениями параметров, каждый раз запуская мои приборы с привязкой к функции. Это также приводит к появлению гораздо большего количества точек в выводе pytest.

hypothesis однако, похоже, многократно запускает только тело тестовой функции, что означает, например, отсутствие откатов транзакций между отдельными запусками. Это означает, что я не могу надежно утверждать для ряда записей БД, когда мой тест вставляет что-то, например, в БД, поскольку все записи из предыдущего прогона все равно будут зависать.

Мне здесь не хватает чего-то очевидного или это ожидаемое поведение? Если да, то есть ли способ получить количество прогонов, выполненных гипотезой, в качестве переменной для использования внутри теста?


person Bart Van Loon    schedule 30.08.2017    source источник


Ответы (1)


Боюсь, вы немного застряли, и в настоящее время нет хорошего решения этой проблемы.

То, как должна работать гипотеза (которая является источником многих ее улучшений по сравнению с pytest-quickcheck), не соответствует предположениям pytest о выполнении теста. Проблема заключается в в основном на стороне pytest - текущая система приспособлений pytest имеет некоторые очень запеклись в предположениях о том, как вы запускаете тест, который не очень хорошо сочетается с контролем выполнения теста, и в последний раз, когда я пытался обойти это, я закончил тем, что погрузился в него около недели работы, прежде чем сдаться и в основном сказал что либо нужно что-то изменить на стороне pytest, либо кому-то нужно профинансировать эту работу если станет лучше.

person DRMacIver    schedule 01.09.2017
comment
Понятно. Спасибо, что нашли время ответить. В настоящее время мне удается обойти это, принимая во внимание это в своих утверждениях. На самом деле, у этого также есть некоторые преимущества. :-) Кстати, есть ли способ получить количество прогонов, выполненных гипотезой, в качестве переменной для использования внутри теста? Спасибо еще раз! - person Bart Van Loon; 02.09.2017