Фантомные тесты после переключения с unittest.TestCase на tf.test.TestCase

Это, вероятно, самая правильная прямая замена: insertAdjacentHTML .

1
задан Dmytro Prylipko 29 March 2019 в 12:12
поделиться

1 ответ

Это метод tf.test.TestCase.test_session . Из-за неудачного именования unittest считает метод test_session тестом и добавляет его в набор тестов. Чтобы предотвратить запуск test_session в качестве теста, Tensorflow должен пропустить его изнутри, поэтому он приводит к «пропущенному» тесту:

def test_session(self,
                 graph=None,
                 config=None,
                 use_gpu=False,
                 force_gpu=False):
    if self.id().endswith(".test_session"):
        self.skipTest("Not a test.")

Убедитесь, что пропущенный тест является test_session, запустив тест с --verbose флаг. Вы должны увидеть результат, подобный следующему:

...
test_session (BoxListOpsTest)
Use cached_session instead. (deprecated) ... skipped 'Not a test.'

Хотя test_session устарело с 1.11 и должно быть заменено на cached_session ( связанный коммит ), на данный момент, удаление еще не запланировано в 2.0. Чтобы избавиться от него, вы можете применить пользовательский фильтр к собранным тестам.

unittest

Вы можете определить пользовательскую функцию load_tests :

test_cases = (BoxListOpsTest, )

def load_tests(loader, tests, pattern):
    suite = unittest.TestSuite()
    for test_class in test_cases:
        tests = loader.loadTestsFromTestCase(test_class)
        filtered_tests = [t for t in tests if not t.id().endswith('.test_session')]
        suite.addTests(filtered_tests)
    return suite

pytest

Добавить пользовательский [ 1120] pytest_collection_modifyitems хук в вашем conftest.py:

def pytest_collection_modifyitems(session, config, items):
    items[:] = [item for item in items if item.name != 'test_session']
0
ответ дан hoefling 29 March 2019 в 12:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: