Предоставляет ли Python поддержку Предположений в качестве предварительных условий? - PullRequest
0 голосов
/ 06 декабря 2018

Допущения в модульных тестах Python

Обеспечивает ли Python поддержку предположений, которые будут использоваться в качестве предварительных условий для тестов, аналогичных тем, которые предоставляются JUnit с assumeThat(...) методами для Java.

Это важно из-за применения Hoare Logic , чтобы процитировать JUnit:

Набор полезных методовдля высказывания предположений об условиях, в которых тест имеет смысл.Неудачное предположение не означает, что код не работает, но тест не дает полезной информации.Предположим, что в основном означает «не запускать этот тест, если эти условия не применяются».Бегун JUnit по умолчанию пропускает тесты с ошибочными предположениями.Пользовательские бегуны могут вести себя по-разному .

Кажется, что Python не предоставляет их "из коробки" в своей инфраструктуре unittest .Я предварительно определил свой собственный подход, расширив unittest.TestCase.

class LoggingTestCase(unittest.TestCase):
    def assumeTrue(self, expr: Any, msg: Any = ...) -> None:
        try:
            super().assertTrue(expr, msg)
            self.test_result = TestResult.PASSED
        except AssertionError as e:
            self.test_result = TestResult.SKIPPED
            raise InvalidAssumption(e)

С помощью этого юнит-теста поведения:

class TestLoggingTestCase(LoggingTestCase):
    def test_assumeTrue(self):
        self.assertRaises(InvalidAssumption, self.assumeTrue, False)  # Passes as expected.
        self.assertRaises(InvalidAssumption, self.assumeTrue, True)  # Fails as expected.

Этот подход, кажется, демонстрирует правильное поведение, которое я хочу, этоэто лучший подход, есть ли лучший способ сделать это, или использовать стороннюю библиотеку?Я ищу лучший способ, чем обернуть все базовые утверждения таким образом, чтобы сделать свои собственные предположения.

1 Ответ

0 голосов
/ 06 декабря 2018

Для этой цели я использую pytest skipif.

http://doc.pytest.org/en/latest/skipping.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...