Книга: Экстремальное программирование. Разработка через тестирование
Внешняя фикстура (External Fixture)
Внешняя фикстура (External Fixture)
Как осуществляется освобождение внешних ресурсов в фикстуре? Переопределите метод tearDown() и освободите в нем ресурсы, выделенные в ходе создания фикстуры.
Помните, что каждый тест должен оставить рабочую среду в том же состоянии, в котором она была до того, как тест начал работу. Например, если внутри теста вы открываете файл, вы должны позаботиться о том, чтобы закрыть его перед тем, как тест завершит работу. Вы можете написать:
testMethod(self):
file = File("foobar"). open()
try:
…????????? ????…
finally:
file.close()
Если файл используется в нескольких тестах, вы можете сделать его частью общей фикстуры:
setUp(self):
self.file = File("foobar"). open()
testMethod(self):
try:
…выполнить тест…
finally:
self.file.close()
Во-первых, возникает неприятное дублирование выражений finally – это означает, что мы упустили что-то в дизайне. Во-вторых, при написании подобного метода можно легко допустить ошибку, например забыть добавить ключевое слово finally или вообще забыть о необходимости закрытия файла. Наконец, в этом тесте существует три сбивающих с толку строки – try, finally и сама команда close, – эти выражения не относятся непосредственно к процедуре тестирования.
Инфраструктура xUnit гарантирует вызов метода под названием tearDown() после выполнения тестового метода. Метод tearDown() будет вызван вне зависимости от того, что случится внутри тестового метода (однако следует иметь в виду, что, если сбой произойдет в ходе выполнения метода setUp(), метод tearDown() вызываться не будет). Мы можем преобразовать предыдущий тест следующим образом:
setUp(self):
self.file = File("foobar"). open()
testMethod(self):
…выполнить тест…
tearDown(self):
self.file.close()
- Безопасность внешних таблиц. Параметр EXTERNAL FILE DIRECTORY
- EXTERNAL FUNCTION DIRECTORY
- 5.1.3. Внешняя и внутренняя чистка компьютера
- External Command
- 3.1.11 External Variables
- 8.3.3. External Memory Managers
- 10.4.1 Programmable Interrupt Controllers and External Interrupts
- 8.12.4 Внешняя маршрутизация
- Прорывная практика: согласованность внутренняя и внешняя
- З.1.11. Не работает внешняя
- Внешняя согласованность
- Фикстура[20] (Fixture)