Светильники является инструментом, который определяет контракт Python для многоразового логики состояние / поддержки, в первую очередь для NBSP модульного тестирования и,. Помощник и логика адаптация включены, чтобы сделать его легко написать свои собственные светильники, используя контракт светильники. Клей код при условии, что делает использование светильников, которые отвечают контракт Светильники в UnitTest совместимых тестов легко и прямо вперед.
Почему Светильники
Стандартный Python unittest.py не дает очевидный способ получения и повторного использования состояние, необходимое в случае испытаний, кроме, добавив метод на тестовом классе. Это плохо масштабируется - комплексные вспомогательные функции propogating иерархию тестового класса является закономерность, когда это будет сделано. Дразнящий в то время как отличный инструмент сам по себе не допустить этого (и помощники издеваться сложные вещи могут накапливаться таким же образом, если их поместить на тестовом классе).
Определяя единую контракт, где помощники не имеют зависимость от тестового класса мы позволить все регулярные мероприятия код гигиены состоится без искажающего влияния находясь в иерархии класса, который является моделирование совершенно другое дело - что и помощники на TestCase страдать от.
О Светильники
Светильник представляет некоторое состояние. Каждый светильник имеет атрибуты на нем, которые являются специфическими для прибора. Например, приспособление, представляющий каталог, который может быть использован для временных файлов может иметь атрибут 'путь'.
Создание Светильники
Минимально, подкласс Светильник, определить настройки, чтобы инициализировать состояние и планировать очистку для когда Очистка называется, и вы сделали:
>>> Импорта UnitTest
>>> Импортные светильники
>>> Класс NoddyFixture (fixtures.Fixture):
... Def Setup (само):
... Супер (NoddyFixture, само) .setUp ()
... Self.frobnozzle = 42
... Self.addCleanup (delattr, я, 'frobnozzle')
Это будет инициализировать frobnozzle, когда программа установки называется, и когда Очистка называется избавиться от frobnozzle атрибута.
Существует помощник для адаптации пару функций или функций в Светильники. это помещает результат функции в fn_result:
>>> Импорта os.path
>>> Импорта shutil
>>> Импорта временных файлов
>>> Def setup_function ():
... Вернуться tempfile.mkdtemp ()
>>> Def teardown_function (приспособление):
... Shutil.rmtree (приспособление)
>>> Приспособление = fixtures.FunctionFixture (setup_function, teardown_function)
>>> Fixture.setUp ()
>>> Печати os.path.isdir (fixture.fn_result)
Правда
>>> Fixture.cleanUp ()
Светильник API
В приведенном выше примере представлены некоторые Светильник API. Для того, чтобы иметь возможность убирать за приспособление используется, все светильники определить метод очистки, который должен быть вызван при приспособление закончил с.
Потому что его приятно иметь возможность построить конкретный набор связанных светильников заранее, используя их, светильники также определить метод установки, которые должны быть под названием, прежде чем пытаться использовать их.
Один общее желание с креплений, которые являются дорогостоящими для создания является повторное использование их во многих случаях испытаний; для поддержки этого база Светильник также определяет сброс, который вызывает self.cleanUp (); self.setUp (). Светильники, которые могут более эффективно сделать сами многоразовые должны переопределить этот метод. Это может быть использован с несколькими государства тест с помощью таких вещей, как testresources, setUpClass или setUpModule.
При использовании прибора с тест вы можете вручную вызвать установку и очистку методы. Более удобным, хотя это использовать включенный клей от fixtures.TestWithFixtures, предусматривающим подмешать определяющую useFixture (верблюд случай, потому что это UnitTest верблюд случай повсюду) метод. Это вызовет установку на арматуре, звоните self.addCleanup (арматуре), чтобы запланировать уборку, и вернуть прибор. Это позволяет один запись:
>>> Импортные testtools
>>> Импорта UnitTest
Обратите внимание, что мы используем testtools тестовый здесь, как мы должны гарантировать метод TestCase.addCleanup.
& NBSP; >>> класс NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& NBSP; ... Def test_example (само):
& NBSP; ... крепеж = self.useFixture (NoddyFixture ())
& NBSP; ... self.assertEqual (42, fixture.frobnozzle)
& NBSP; >>> результат = unittest.TestResult ()
& NBSP;. >>> _ = NoddyTest ('test_example') запустить (результат)
& NBSP; >>> печати result.wasSuccessful ()
& NBSP; Правда
Светильники реализации протокола контекстное, так что вы можете также использовать приспособление в качестве менеджера контекста:
>>> С fixtures.FunctionFixture (setup_function, teardown_function) в качестве светильника:
... Печать os.path.isdir (fixture.fn_result)
Правда
Требования
- Python
Комментарии не найдены