Гипотеза, кажется, не соблюдает аргумент maxfail pytest - PullRequest
1 голос
/ 21 апреля 2020

Несмотря на указание maxfail=1, кажется, что гипотеза продолжает генерировать примеры и запускать их, а затем терпит неудачу.

Есть ли обходной путь?

Вот небольшой пример:

from hypothesis.stateful import invariant, rule, RuleBasedStateMachine


class MaxFail(RuleBasedStateMachine):
    count = 0

    @rule()
    def process(self):
        self.count += 1

    @invariant()
    def all_done(self):
        print('-- in invariant %d' % self.count)
        if self.count > 1:
            assert False


MaxFailTest = MaxFail.TestCase

1 Ответ

2 голосов
/ 23 апреля 2020

Это потому, что с точки зрения Pytest весь тест с состоянием - это всего лишь один тест - он вызывает MaxFailTest.runTest(), и в случае неудачи он не будет запускать другие функции теста.

С другой стороны, Гипотеза не знает ни о каких аргументах или настройках Pytest, кроме , добавленных в плагин . Его можно одинаково хорошо использовать с pytest, unittest или любым другим средством выполнения теста , потому что просто оборачивает написанную вами внутреннюю функцию теста.

Короче говоря: Гипотеза не знает о --maxfail аргумент, и Pytest не знает, что тест провалится, пока гипотеза не выдаст ошибку с минимальным найденным примером (ами).

...