tf.test.StubOutForTesting
Класс для подстановки методов при модульном тестировании.
tf.test.StubOutForTesting()
Пример использования:
Вы хотите, чтобы os.path.exists() всегда возвращало true во время тестирования.
stubs = StubOutForTesting() stubs.Set(os.path, 'exists', lambda x: 1) ... stubs.CleanUp()
Выше изменяет os.path.exists на лямбда-функцию, которая возвращает 1. После выполнения части кода ... метод CleanUp() находит старое значение os.path.exists и восстанавливает его.
Методы
CleanUp
CleanUp()
Отменяет все вызовы SmartSet() и Set(), восстанавливая исходные определения.
Set
Set(
parent, child_name, new_child
)
В родительском объекте заменяет старое определение child_name новым значением new_child.
Родительским объектом может быть модуль, когда дочерний элемент — функция в области видимости модуля. Или родительским объектом может быть класс, когда заменяется метод класса. Имя дочернего элемента устанавливается в new_child, а предыдущее определение сохраняется для последующего использования, когда вызывается UnsetAll().
Этот метод поддерживает случаи, когда child_name является статическим или классовым методом parent.
| Аргументы | |
|---|---|
parent | Контекст, в котором необходимо изменить атрибут child_name. |
child_name | Имя атрибута, который нужно изменить. |
new_child | Новое значение атрибута. |
SmartSet
SmartSet(
obj, attr_name, new_attr
)
Заменяет obj.attr_name на new_attr.
Этот метод умный и работает на уровне модуля, класса и экземпляра, сохраняя при этом правильное наследование. Он не будет подменять C-типы, однако, если это не разрешено явно типом.
Этот метод поддерживает случаи, когда attr_name является статическим или классовым методом obj.
Примечания:
- Если obj — экземпляр, то его класс будет фактически подставлен. Обратите внимание, что метод Set() этого не делает: если obj — экземпляр, будет подставлен он (а не его класс).
- Подстановка использует встроенные функции getattr и setattr. Таким образом, при подстановке будут вызваны get и set (вероятно, для изменения obj.dict вместо getattr() и setattr()).
| Аргументы | |
|---|---|
obj | Объект, атрибуты которого нужно изменить. |
attr_name | Имя атрибута, который нужно изменить. |
new_attr | Новое значение атрибута. |
| Исключения | |
|---|---|
AttributeError | Если атрибут не найден. |
SmartUnsetAll
SmartUnsetAll()
Отменяет вызовы SmartSet(), восстанавливая исходные определения.
Этот метод автоматически вызывается при удалении объекта StubOutForTesting(); нет необходимости вызывать его явно.
Можно вызывать SmartUnsetAll() многократно, поскольку последующие вызовы не имеют эффекта, если не были вызваны SmartSet().
UnsetAll
UnsetAll()
Отменяет вызовы Set(), восстанавливая исходные определения.
Этот метод автоматически вызывается при удалении объекта StubOutForTesting(); нет необходимости вызывать его явно.
Можно вызывать UnsetAll() многократно, поскольку последующие вызовы не имеют эффекта, если не были вызваны Set().
__enter__
__enter__()
__exit__
__exit__(
unused_exc_type, unused_exc_value, unused_tb
)
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/test/StubOutForTesting