Как пометить одну функцию, а не тест для pytest? - PullRequest
0 голосов
/ 30 мая 2018

Я использую pytest для тестирования некоторого кода на основе TensorFlow.

A TestCase определено для простоты, например:

class TestCase(tf.test.TestCase):
    # ...

Проблема в том, что tf.test.TestCase предоставляет полезную информациюфункция self.test_session(), которая в pytest рассматривалась как тестовый метод, поскольку ее имя начинается с test_.

Отчет о результатах теста Pytest более успешен, чем тестовые методы, которые я определил из-за test_session() методов.

Я использую следующий код, чтобы пропустить test_session:

class TestCase(tf.test.TestCase):
    @pytest.mark.skip
    @contextmanager
    def test_session(self):
        with super().test_session() as sess:
            yield sess

Однако в отчете о тестировании будут некоторые "s", указывающие на то, что некоторые тесты пропущены.

Есть лиВ любом случае, я могу пометить один точный метод, а не метод теста, не изменив правила обнаружения тестов pytest в глобальном масштабе?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Отфильтруйте ложные срабатывания после сбора тестовых элементов: создайте conftest.py в своем каталоге тестов с помощью пользовательского обработчика после сбора:

# conftest.py
def pytest_collection_modifyitems(session, config, items):
    items[:] = [item for item in items if item.name != 'test_session']

pytest все равно будет собирать test_sessionметоды (вы заметите это в pytest строке отчета collected n tests), но не выполняйте их как тесты и не рассматривайте их где-либо в тестовом прогоне.


Related: fix for unittestтесты в стиле

Проверьте этот ответ .

0 голосов
/ 30 мая 2018

Есть способ сделать это в unittest

@unittest.skip("skipping reason")

В tf.test есть skipTest (причина), подробнее на https://www.tensorflow.org/api_docs/python/tf/test/TestCase#skipTest

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