tf.test.TestCase
| Просмотр исходного кода на GitHub |
Базовый класс для тестов, требующих проверки TensorFlow.
tf.test.TestCase(
methodName='runTest'
)
Подклассы
Методы
addCleanup
addCleanup(
*args, **kwargs
)
Добавить функцию с аргументами, которая будет вызвана по завершении теста. Добавляемые функции вызываются в порядке LIFO после tearDown при успешном или неуспешном выполнении теста.
Элементы очистки вызываются даже если setUp завершается ошибкой (в отличие от tearDown).
addTypeEqualityFunc
addTypeEqualityFunc(
typeobj, function
)
Добавить функцию типа assertEqual для сравнения типа.
Этот метод используется подклассами TestCase, которым необходимо зарегистрировать собственные функции равенства типов для получения более информативных сообщений об ошибках.
| Аргументы | |
|---|---|
typeobj | Тип данных, для которого будет вызвана эта функция, когда оба значения одного типа в assertEqual(). |
function | Вызываемый объект, принимающий два аргумента и необязательный аргумент msg=, который вызывает self.failureException с полезным сообщением об ошибке, когда два аргумента не равны. |
assertAllClose
assertAllClose(
a, b, rtol=1e-06, atol=1e-06, msg=None
)
Проверяет, что две структуры numpy массивов или тензоров имеют близкие значения.
a и b могут быть произвольно вложенными структурами. Уровень вложенной структуры может быть dict, namedtuple, tuple или list.
Примечание: реализация следуетnumpy.allclose(и numpy.testing.assert_allclose). Она проверяет, равны ли два массива по элементам с точностью. Относительное различие (rtol * abs(b)) и абсолютное различиеatolскладываются, чтобы сравнить с абсолютным различием междуaиb.
| Аргументы | |
|---|---|
a | Ожидаемый numpy ndarray, или что-либо, что может быть преобразовано в numpy ndarray (включая тензор), или любая произвольно вложенная структура этих. |
b | Фактический numpy ndarray, или что-либо, что может быть преобразовано в numpy ndarray (включая тензор), или любая произвольно вложенная структура этих. |
rtol | относительная погрешность. |
atol | абсолютная погрешность. |
msg | Необязательное сообщение для отчёта о сбое. |
| Исключения | |
|---|---|
ValueError | если только один из a[p] и b[p] является словарем или a[p] и b[p] имеют разную длину, где [p] обозначает путь к вложенной структуре, например, для a = [(1, 1), {'d': (6, 7)}] и [p] = [1]['d'], тогда a[p] = (6, 7). |
assertAllCloseAccordingToType
assertAllCloseAccordingToType(
a, b, rtol=1e-06, atol=1e-06, float_rtol=1e-06, float_atol=1e-06,
half_rtol=0.001, half_atol=0.001, bfloat16_rtol=0.01, bfloat16_atol=0.01,
msg=None
)
Подобно assertAllClose, но также подходит для сравнения массивов fp16.
В частности, погрешность уменьшается до 1e-3, если хотя бы один из аргументов имеет тип float16.
| Аргументы | |
|---|---|
a | ожидаемый numpy массив, или что-либо, что может быть преобразован в него. |
b | фактический numpy массив, или что-либо, что может быть преобразован в него. |
rtol | относительная погрешность. |
atol | абсолютная погрешность. |
float_rtol | относительная погрешность для float32. |
float_atol | абсолютная погрешность для float32. |
half_rtol | относительная погрешность для float16. |
half_atol | абсолютная погрешность для float16. |
bfloat16_rtol | относительная погрешность для bfloat16. |
bfloat16_atol | абсолютная погрешность для bfloat16. |
msg | Необязательное сообщение для отчёта о сбое. |
assertAllEqual
assertAllEqual(
a, b, msg=None
)
Проверяет, что два массива numpy или тензоры имеют одинаковые значения.
| Аргументы | |
|---|---|
a | ожидаемый numpy массив, или что-либо, что может быть преобразован в него. |
b | фактический numpy массив, или что-либо, что может быть преобразован в него. |
msg | Необязательное сообщение для отчёта о сбое. |
assertAllGreater
assertAllGreater(
a, comparison_target
)
Проверить, что все элементы больше целевого значения.
| Аргументы | |
|---|---|
a | numpy массив, или что-либо, что может быть преобразован в numpy массив (включая тензор). |
comparison_target | Целевое значение сравнения. |
assertAllGreaterEqual
assertAllGreaterEqual(
a, comparison_target
)
Проверить, что все элементы больше или равны целевому значению.
| Аргументы | |
|---|---|
a | numpy массив, или что-либо, что может быть преобразован в numpy массив (включая тензор). |
comparison_target | Целевое значение сравнения. |
assertAllInRange
assertAllInRange(
target, lower_bound, upper_bound, open_lower_bound=False, open_upper_bound=False
)
Проверить, что все элементы тензора находятся в заданном диапазоне.
| Аргументы | |
|---|---|
target | numpy массив, или что-либо, что может быть преобразован в numpy массив (включая тензор). |
lower_bound | нижняя граница диапазона |
upper_bound | верхняя граница диапазона |
open_lower_bound | (bool) открыта ли нижняя граница (т.е., > вместо по умолчанию >=) |
open_upper_bound | (bool) открыта ли верхняя граница (т.е., < вместо по умолчанию <=) |
| Исключения | |
|---|---|
AssertionError | если тензор значений не имеет упорядоченного числового типа (float* или int*), или если есть значения nan, или если какой-либо элемент не попадает в заданный диапазон. |
assertAllInSet
assertAllInSet(
target, expected_set
)
Проверить, что все элементы тензора находятся в заданном замкнутом множестве.
| Аргументы | |
|---|---|
target | numpy массив, или что-либо, что может быть преобразован в numpy массив (включая тензор). |
expected_set | (list, tuple или set) Замкнутое множество, в которое ожидается попадание элементов значения target. |
| Исключения | |
|---|---|
AssertionError | если какой-либо элемент не входит в expected_set. |
assertAllLess
assertAllLess(
a, comparison_target
)
Проверить, что все элементы меньше целевого значения.
| Аргументы | |
|---|---|
a | Массив NumPy ndarray, или любой объект, который можно преобразовать в массив NumPy ndarray (включая Tensor). |
comparison_target | Целевое значение сравнения. |
assertAllLessEqual
assertAllLessEqual(
a, comparison_target
)
Проверка, что все элементы значения меньше или равны целевому значению.
| Аргументы | |
|---|---|
a | Массив NumPy ndarray, или любой объект, который можно преобразовать в массив NumPy ndarray (включая Tensor). |
comparison_target | Целевое значение сравнения. |
assertAlmostEqual
assertAlmostEqual(
first, second, places=None, msg=None, delta=None
)
Не удается, если два объекта не равны, как определено их разницей, округленной до заданного числа десятичных знаков (по умолчанию 7) и сравнением с нулем, или сравнением, что разность между двумя объектами больше заданного дельта.
Обратите внимание, что десятичные знаки (от нуля) обычно не совпадают с значащими цифрами (измеренными от самой значащей цифры).
Если два объекта сравниваются как равные, то они автоматически сравниваются как почти равные.
assertAlmostEquals
assertAlmostEquals(
*args, **kwargs
)
assertArrayNear
assertArrayNear(
farray1, farray2, err, msg=None
)
Проверяет, что два массива с плавающей точкой находятся близко друг к другу.
Проверяет, что для всех элементов farray1 и farray2 |f1 - f2| < err. Если нет, проверяет тест на ошибку.
| Аргументы | |
|---|---|
farray1 | список значений с плавающей точкой. |
farray2 | список значений с плавающей точкой. |
err | значение с плавающей точкой. |
msg | необязательное сообщение для отчета об ошибке. |
assertBetween
assertBetween(
value, minv, maxv, msg=None
)
Проверяет, что значение находится между minv и maxv (включительно).
assertCommandFails
assertCommandFails(
command, regexes, env=None, close_fds=True, msg=None
)
Проверяет, что команда оболочки завершается с ошибкой, и ошибка соответствует регулярному выражению в списке.
| Аргументы | |
|---|---|
command | Список или строка, представляющие команду для выполнения. |
regexes | список строк регулярных выражений. |
env | Словарь настроек переменных среды. Если None, для дочернего процесса не будет установлено никаких переменных среды. Это делается для повышения герметичности тестов. ПРИМЕЧАНИЕ: это поведение отличается от стандартного модуля subprocess. |
close_fds | Закрывать ли все открытые дескрипторы файлов в дочернем процессе после разветвления. |
msg | необязательное сообщение для отчета об ошибке. |
assertCommandSucceeds
assertCommandSucceeds(
command, regexes=(b'',), env=None, close_fds=True, msg=None
)
Проверяет, что команда оболочки выполняется успешно (т.е. завершается с кодом 0).
| Аргументы | |
|---|---|
command | Список или строка, представляющие команду для выполнения. |
regexes | Список строк регулярных выражений байтов, которые соответствуют успеху. |
env | Словарь настроек переменных среды. Если None, для дочернего процесса не будет установлено никаких переменных среды. Это делается для повышения герметичности тестов. ПРИМЕЧАНИЕ: это поведение отличается от стандартного модуля subprocess. |
close_fds | Закрывать ли все открытые дескрипторы файлов в дочернем процессе после разветвления. |
msg | необязательное сообщение для отчета об ошибке. |
assertContainsExactSubsequence
assertContainsExactSubsequence(
container, subsequence, msg=None
)
Проверяет, что "container" содержит "subsequence" как точную подпоследовательность.
Проверяет, что "container" содержит все элементы "subsequence" в порядке и без других элементов, вставленных между ними. Например, [1, 2, 3] является точной подпоследовательностью [0, 0, 1, 2, 3, 0], но не [0, 0, 1, 2, 0, 3, 0].
| Аргументы | |
|---|---|
container | список, который мы проверяем на включение в качестве подпоследовательности. |
subsequence | список, который мы надеемся, будет точной подпоследовательностью контейнера. |
msg | необязательное сообщение для отчета об ошибке. |
assertContainsInOrder
assertContainsInOrder(
strings, target, msg=None
)
Проверяет, что указанные строки найдены в целевом порядке.
Это может быть полезно для проверки HTML-вывода.
| Аргументы | |
|---|---|
strings | Список строк, например, [ 'лиса', 'собака' ] |
target | Целевая строка, в которой следует искать строки, например, 'Быстрая коричневая лиса перепрыгнула через ленивую собаку'. |
msg | необязательное сообщение для отчета об ошибке. |
assertContainsSubsequence
assertContainsSubsequence(
container, subsequence, msg=None
)
Проверяет, что "container" содержит "subsequence" как подпоследовательность.
Проверяет, что "container" содержит все элементы "subsequence" в порядке, но, возможно, с другими элементами, вставленными между ними. Например, [1, 2, 3] является подпоследовательностью [0, 0, 1, 2, 0, 3, 0], но не [0, 0, 1, 3, 0, 2, 0].
| Аргументы | |
|---|---|
container | список, который мы проверяем на включение в качестве подпоследовательности. |
subsequence | список, который мы надеемся, будет подпоследовательностью контейнера. |
msg | необязательное сообщение для отчета об ошибке. |
assertContainsSubset
assertContainsSubset(
expected_subset, actual_set, msg=None
)
Проверяет, является ли фактическая итерируемая коллекция надмножеством ожидаемой итерируемой коллекции.
assertCountEqual
assertCountEqual(
first, second, msg=None
)
Сравнение последовательностей без учёта порядка, проверяющее, что элементы одинаковы, независимо от порядка. Если один и тот же элемент встречается более одного раза, он проверяет, что элементы встречаются одинаковое число раз.
self.assertEqual(Counter(list(first)),
Counter(list(second)))
Пример:
- [0, 1, 1] and [1, 0, 1] compare equal. - [0, 0, 1] and [0, 1] compare unequal.
assertDTypeEqual
assertDTypeEqual(
target, expected_dtype
)
Проверка, что тип данных массива ndarray равен ожидаемому.
| Аргументы | |
|---|---|
target | Массив NumPy ndarray, или любой объект, который можно преобразовать в массив NumPy ndarray (включая Tensor). |
expected_dtype | Ожидаемый тип данных. |
assertDeviceEqual
assertDeviceEqual(
device1, device2, msg=None
)
Проверка, что два заданных устройства одинаковые.
| Аргументы | |
|---|---|
device1 | Имя устройства в виде строки или объект TensorFlow DeviceSpec . |
device2 | Имя устройства в виде строки или объект TensorFlow DeviceSpec . |
msg | Необязательное сообщение для отчета об ошибке. |
assertDictContainsSubset
assertDictContainsSubset(
subset, dictionary, msg=None
)
Проверяет, является ли словарь надмножеством подмножества.
assertDictEqual
assertDictEqual(
a, b, msg=None
)
Возбуждает исключение AssertionError, если a и b не являются равными словарями.
| Аргументы | |
|---|---|
a | Словарь, ожидаемое значение. |
b | Словарь, фактическое значение. |
msg | Необязательная строка, связанное сообщение. |
| Исключения | |
|---|---|
AssertionError | если словари не равны. |
assertEmpty
assertEmpty(
container, msg=None
)
Проверяет, что объект имеет нулевую длину.
| Аргументы | |
|---|---|
container | Любой объект, реализующий интерфейс collections.abc.Sized. |
msg | Необязательное сообщение для отчета об ошибке. |
assertEndsWith
assertEndsWith(
actual, expected_end, msg=None
)
Проверяет, что actual.endswith(expected_end) равно True.
| Аргументы | |
|---|---|
actual | str |
expected_end | str |
msg | Необязательное сообщение для отчета об ошибке. |
assertEqual
assertEqual(
first, second, msg=None
)
Возбуждает исключение, если два объекта не равны, как определено оператором '=='.
assertEquals
assertEquals(
*args, **kwargs
)
assertFalse
assertFalse(
expr, msg=None
)
Проверьте, что выражение ложно.
assertGreater
assertGreater(
a, b, msg=None
)
Точно так же, как self.assertTrue(a > b), но с более приятным сообщением по умолчанию.
assertGreaterEqual
assertGreaterEqual(
a, b, msg=None
)
Точно так же, как self.assertTrue(a >= b), но с более приятным сообщением по умолчанию.
assertIn
assertIn(
member, container, msg=None
)
Точно так же, как self.assertTrue(a in b), но с более приятным сообщением по умолчанию.
assertIs
assertIs(
expr1, expr2, msg=None
)
Точно так же, как self.assertTrue(a is b), но с более приятным сообщением по умолчанию.
assertIsInstance
assertIsInstance(
obj, cls, msg=None
)
То же самое, что и self.assertTrue(isinstance(obj, cls)), но с более приятным сообщением по умолчанию.
assertIsNone
assertIsNone(
obj, msg=None
)
То же самое, что и self.assertTrue(obj is None), но с более приятным сообщением по умолчанию.
assertIsNot
assertIsNot(
expr1, expr2, msg=None
)
Точно так же, как self.assertTrue(a is not b), но с более приятным сообщением по умолчанию.
assertIsNotNone
assertIsNotNone(
obj, msg=None
)
Включено для симметрии с assertIsNone.
assertItemsEqual
assertItemsEqual(
first, second, msg=None
)
Сравнение последовательностей без учёта порядка, утверждающее, что элементы одинаковы независимо от порядка. Если один и тот же элемент встречается более одного раза, проверяется, что элементы встречаются одинаковое количество раз.
self.assertEqual(Counter(list(first)),
Counter(list(second)))
Пример:
- [0, 1, 1] and [1, 0, 1] compare equal. - [0, 0, 1] and [0, 1] compare unequal.
assertJsonEqual
assertJsonEqual(
first, second, msg=None
)
Утверждает, что JSON-объекты, определённые в двух строках, равны.
Сводка различий будет включена в сообщение об ошибке с использованием assertSameStructure.
| Аргументы | |
|---|---|
first | Строка, содержащая JSON для декодирования и сравнения со второй строкой. |
second | Строка, содержащая JSON для декодирования и сравнения с первой строкой. |
msg | Дополнительный текст для включения в сообщение об ошибке. |
assertLen
assertLen(
container, expected_len, msg=None
)
Утверждает, что у объекта ожидаемая длина.
| Аргументы | |
|---|---|
container | Любой объект, реализующий интерфейс collections.abc.Sized. |
expected_len | Ожидаемая длина контейнера. |
msg | Необязательное сообщение для отчёта об ошибке. |
assertLess
assertLess(
a, b, msg=None
)
Точно так же, как self.assertTrue(a < b), но с более приятным сообщением по умолчанию.
assertLessEqual
assertLessEqual(
a, b, msg=None
)
Точно так же, как self.assertTrue(a <= b), но с более приятным сообщением по умолчанию.
assertListEqual
assertListEqual(
list1, list2, msg=None
)
Утверждение равенства списков.
| Аргументы | |
|---|---|
list1 | Первый список для сравнения. |
list2 | Второй список для сравнения. |
msg | Необязательное сообщение для использования при ошибке вместо списка различий. |
assertLogs
assertLogs(
logger=None, level=None
)
Не проходит тест, если сообщение журнала уровня level или выше не отправляется в logger_name или его дочерние элементы. Если опущено, level по умолчанию равен INFO, а logger - корневому журналу.
Этот метод должен использоваться в качестве менеджера контекста и возвращает объект записи с двумя атрибутами: output и records. В конце менеджера контекста атрибут output будет списком соответствующих отформатированных сообщений журнала, а атрибут records - списком соответствующих объектов LogRecord.
Пример::
with self.assertLogs('foo', level='INFO') as cm:
logging.getLogger('foo').info('first message')
logging.getLogger('foo.bar').error('second message')
self.assertEqual(cm.output, ['INFO:foo:first message',
'ERROR:foo.bar:second message'])
assertMultiLineEqual
assertMultiLineEqual(
first, second, msg=None, **kwargs
)
Утверждает, что две многострочные строки равны.
assertNDArrayNear
assertNDArrayNear(
ndarray1, ndarray2, err, msg=None
)
Утверждает, что два массива NumPy имеют близкие значения.
| Аргументы | |
|---|---|
ndarray1 | массив NumPy. |
ndarray2 | массив NumPy. |
err | float. Максимальное абсолютное допустимое различие. |
msg | Необязательное сообщение для отчёта об ошибке. |
assertNear
assertNear(
f1, f2, err, msg=None
)
Утверждает, что два числа с плавающей точкой близки друг к другу.
Проверяет, что |f1 - f2| < err, и утверждает ошибку теста, если это не так.
| Аргументы | |
|---|---|
f1 | Значение с плавающей точкой. |
f2 | Значение с плавающей точкой. |
err | Значение с плавающей точкой. |
msg | Необязательная строка сообщения, добавляемая к сообщению об ошибке. |
assertNoCommonElements
assertNoCommonElements(
expected_seq, actual_seq, msg=None
)
Проверяет, являются ли итерируемые actual и expected непересекающимися.
assertNotAllClose
assertNotAllClose(
a, b, **kwargs
)
Утверждает, что два массива NumPy или тензора не имеют близких значений.
| Аргументы | |
|---|---|
a | первое значение для сравнения. |
b | второе значение для сравнения. |
**kwargs | дополнительные ключевые аргументы, передаваемые в базовое вызов assertAllClose. |
| Исключения | |
|---|---|
AssertionError | Если a и b неожиданно близки по всем элементам. |
assertNotAllEqual
assertNotAllEqual(
a, b, msg=None
)
Утверждает, что два массива NumPy или тензора не имеют одинаковых значений.
| Аргументы | |
|---|---|
a | ожидаемый массив NumPy или что-либо, что может быть преобразовано в него. |
b | фактический массив NumPy или что-либо, что может быть преобразовано в него. |
msg | Необязательное сообщение для отчёта об ошибке. |
assertNotAlmostEqual
assertNotAlmostEqual(
first, second, places=None, msg=None, delta=None
)
Ошибка, если два объекта равны, как определено разностью, округлённой до заданного числа десятичных знаков (по умолчанию 7), и сравнением с нулём, или если разница между двумя объектами меньше заданного дельты.
Обратите внимание, что десятичные места (от нуля) обычно не совпадают с значащими цифрами (измеряемыми от наиболее значащей цифры).
Объекты, которые автоматически равны, вызывают ошибку.
assertNotAlmostEquals
assertNotAlmostEquals(
*args, **kwargs
)
assertNotEmpty
assertNotEmpty(
container, msg=None
)
Утверждает, что объект имеет ненулевую длину.
| Аргументы | |
|---|---|
container | Любой объект, реализующий интерфейс collections.abc.Sized. |
msg | Необязательное сообщение для отчёта об ошибке. |
assertNotEndsWith
assertNotEndsWith(
actual, unexpected_end, msg=None
)
Утверждает, что actual.endswith(unexpected_end) равно False.
| Аргументы | |
|---|---|
actual | строка |
unexpected_end | строка |
msg | Необязательное сообщение для отчёта об ошибке. |
assertNotEqual
assertNotEqual(
first, second, msg=None
)
Ошибка, если два объекта равны, как определено оператором '!='.
assertNotEquals
assertNotEquals(
*args, **kwargs
)
assertNotIn
assertNotIn(
member, container, msg=None
)
Точно так же, как self.assertTrue(a not in b), но с более приятным сообщением по умолчанию.
assertNotIsInstance
assertNotIsInstance(
obj, cls, msg=None
)
Включено для симметрии с assertIsInstance.
assertNotRegex
assertNotRegex(
text, unexpected_regex, msg=None
)
Провалить тест, если текст соответствует регулярному выражению.
assertNotRegexpMatches
assertNotRegexpMatches(
*args, **kwargs
)
assertNotStartsWith
assertNotStartsWith(
actual, unexpected_start, msg=None
)
Утверждает, что actual.startswith(unexpected_start) равно False.
| Args | |
|---|---|
actual | str |
unexpected_start | str |
msg | Необязательное сообщение для отчёта об ошибке. |
assertProtoEquals
assertProtoEquals(
expected_message_maybe_ascii, message, msg=None
)
Утверждает, что сообщение такое же, как разобранное expected_message_ascii.
Создаёт другой прототип сообщения, считывает ASCII-сообщение в него и затем сравнивает их с помощью self._AssertProtoEqual().
| Args | |
|---|---|
expected_message_maybe_ascii | сообщение-прототип в исходной или ASCII-форме. |
message | сообщение для проверки. |
msg | Необязательное сообщение для отчёта об ошибке. |
assertProtoEqualsVersion
assertProtoEqualsVersion(
expected, actual, producer=versions.GRAPH_DEF_VERSION,
min_consumer=versions.GRAPH_DEF_VERSION_MIN_CONSUMER, msg=None
)
assertRaises
assertRaises(
expected_exception, *args, **kwargs
)
Не допускает, чтобы вызываемый объект не поднял исключение класса expected_exception при вызове со специфицированными позиционными и ключевыми аргументами. Если поднято исключение другого типа, оно не будет перехвачено, и тест будет признан ошибочным, точно так же, как и для неожидаемого исключения.
Если вызывается с опущенным вызываемым объектом и аргументами, вернёт объект контекста, используемый так::
with self.assertRaises(SomeException):
do_something()
При использовании assertRaises в качестве объекта контекста, можно указать необязательный ключевой аргумент 'msg'.
Объект контекста сохраняет ссылку на исключение как атрибут 'exception'. Это позволяет проверить исключение после утверждения::
with self.assertRaises(SomeException) as cm:
do_something()
the_exception = cm.exception
self.assertEqual(the_exception.error_code, 3)
assertRaisesOpError
assertRaisesOpError(
expected_err_re_or_predicate
)
assertRaisesRegex
assertRaisesRegex(
expected_exception, expected_regex, *args, **kwargs
)
Утверждает, что сообщение в поднятом исключении соответствует регулярному выражению.
| Args | |
|---|---|
expected_exception | Ожидаемый класс исключения. |
expected_regex | Регулярное выражение (объект re.Pattern или строка), ожидаемое в сообщении об ошибке. |
args | Вызываемый объект и дополнительные позиционные аргументы. |
kwargs | Дополнительные ключевые аргументы. |
msg | Необязательное сообщение, используемое в случае ошибки. Может быть использовано только при использовании assertRaisesRegex в качестве менеджера контекста. |
assertRaisesRegexp
assertRaisesRegexp(
expected_exception, expected_regex, *args, **kwargs
)
Утверждает, что сообщение в поднятом исключении соответствует регулярному выражению.
| Args | |
|---|---|
expected_exception | Ожидаемый класс исключения. |
expected_regex | Регулярное выражение (объект re.Pattern или строка), ожидаемое в сообщении об ошибке. |
args | Вызываемый объект и дополнительные позиционные аргументы. |
kwargs | Дополнительные ключевые аргументы. |
msg | Необязательное сообщение, используемое в случае ошибки. Может быть использовано только при использовании assertRaisesRegex в качестве менеджера контекста. |
assertRaisesWithLiteralMatch
assertRaisesWithLiteralMatch(
expected_exception, expected_exception_message, callable_obj=None, *args,
**kwargs
)
Утверждает, что сообщение в поднятом исключении равно указанной строке.
В отличие от assertRaisesRegex, этот метод принимает литеральную строку, а не регулярное выражение.
with self.assertRaisesWithLiteralMatch(ExType, 'message'): DoSomething()
| Args | |
|---|---|
expected_exception | Ожидаемый класс исключения. |
expected_exception_message | Ожидаемое текстовое сообщение в поднятом исключении. Для исключения raise exception e, expected_exception_message должно быть равно str(e). |
callable_obj | Вызываемый объект или None для возвращения менеджера контекста. |
*args | Дополнительные аргументы. |
**kwargs | Дополнительные ключевые аргументы. |
| Returns | |
|---|---|
| Менеджер контекста, если callable_obj равен None. В противном случае, None. |
| Raises | |
|---|---|
| self.failureException, если callable_obj не вызывает соответствующее исключение. |
assertRaisesWithPredicateMatch
@contextlib.contextmanager
assertRaisesWithPredicateMatch(
exception_type, expected_err_re_or_predicate
)
Возвращает менеджер контекста для заключения кода, ожидающего поднятия исключения.
Если исключение является OpError, стек операций также включается в поиск соответствия предиката сообщения.
| Args | |
|---|---|
exception_type | Ожидаемый тип исключения, который должен быть поднят. |
expected_err_re_or_predicate | Если это вызываемый объект, он должен быть функцией с одним аргументом, которая проверяет переданное исключение и возвращает True (успех) или False (необходимо провалить тест). В противном случае ожидается, что сообщение об ошибке частично соответствует этому регулярному выражению. |
| Returns | |
|---|---|
| Менеджер контекста, который нужно окружать кодом, ожидающим поднятия исключения. |
assertRegex
assertRegex(
text, expected_regex, msg=None
)
Проваливает тест, если текст не соответствует регулярному выражению.
assertRegexMatch
assertRegexMatch(
actual_str, regexes, message=None
)
Утверждает, что хотя бы одно регулярное выражение из regexes соответствует str.
Если возможно, используйте assertRegex, что является более простой версией этого метода. assertRegex принимает одно регулярное выражение (строка или скомпилированный объект re) вместо списка.
Примечания:
Эта функция использует сопоставление подстрок, т.е. сопоставление происходит, если любая подстрока сообщения об ошибке соответствует любому регулярному выражению в списке. Это удобнее для пользователя, чем полное сопоставление строк.
Если regexes пустой список, сопоставление всегда будет неудачным.
Используйте regexes=[''] для регулярного выражения, которое всегда будет успешным.
'.' соответствует любому одиночному символу кроме новой строки. Чтобы соответствовать любому символу, используйте '(.|\n)'.
'^' соответствует началу каждой строки, а не только началу строки. Аналогично, '$' соответствует концу каждой строки.
Будет выброшено исключение, если regexes содержит некорректное регулярное выражение.
| Args | |
|---|---|
actual_str | Строка, которую мы пытаемся сопоставить с элементами в regexes. |
regexes | Регулярные выражения, которые мы хотим сопоставить со str. См. "Примечания" выше для подробных пояснений о том, как это интерпретируется. |
message | Сообщение, которое будет выведено, если тест провалится. |
assertRegexpMatches
assertRegexpMatches(
*args, **kwargs
)
assertSameElements
assertSameElements(
expected_seq, actual_seq, msg=None
)
Утверждает, что два последовательности имеют одинаковые элементы (в любом порядке).
В отличие от assertCountEqual, этот метод не заботится о дубликатах в ожидаемых и фактических последовательностях.
assertSameElements([1, 1, 1, 0, 0, 0], [0, 1]) # Не генерирует AssertionError
Если возможно, используйте assertCountEqual вместо assertSameElements.
| Args | |
|---|---|
expected_seq | Последовательность, содержащая ожидаемые элементы. |
actual_seq | Последовательность, которую мы тестируем. |
msg | Сообщение, которое будет выведено, если тест провалится. |
assertSameStructure
assertSameStructure(
a, b, aname='a', bname='b', msg=None
)
Утверждает, что два значения содержат одинаковое структурное содержимое.
Два аргумента должны быть деревом данных, состоящим из деревьев словарей и списков. Они будут сравниваться глубоко, переходя в содержимое словарей и списков; другие элементы будут сравниваться с помощью оператора ==. Если структуры различаются по содержанию, сообщение об ошибке укажет место в структурах, где найдено первое различие. Это может быть полезно при сравнении больших структур.
Поддерживаются смешанные типы последовательности и множества. Поддерживаются смешанные типы отображений, но порядок ключей в сравнении не учитывается.
| Args | |
|---|---|
a | Первая структура для сравнения. |
b | Вторая структура для сравнения. |
aname | Имя переменной для первой структуры в сообщениях об утверждениях. |
bname | Имя переменной для второй структуры. |
msg | Дополнительный текст для включения в сообщение об ошибке. |
assertSequenceAlmostEqual
assertSequenceAlmostEqual(
expected_seq, actual_seq, places=None, msg=None, delta=None
)
Утверждение приблизительного равенства для упорядоченных последовательностей.
Ошибка, если две последовательности не равны, как определено по разнице их значений, округленных до заданного числа десятичных знаков (по умолчанию 7) и сравнением с нулём, или по сравнением, что разность между каждым значением в двух последовательностях больше заданного дельты.
Обратите внимание, что десятичные знаки (от нуля) обычно не совпадают с значащими цифрами (измеренными от самой значимой цифры).
Если две последовательности равны, то они автоматически считаются почти равными.
| Аргументы | |
|---|---|
expected_seq | Последовательность, содержащая элементы, которые мы ожидаем. |
actual_seq | Последовательность, которую мы тестируем. |
places | Количество десятичных знаков для сравнения. |
msg | Сообщение, которое должно быть выведено, если тест завершился неудачно. |
delta | Разница между сравниваемыми значениями, которая считается приемлемой. |
assertSequenceEqual
assertSequenceEqual(
seq1, seq2, msg=None, seq_type=None
)
Утверждение равенства для упорядоченных последовательностей (таких как списки и кортежи).
Для целей этой функции допустимый тип упорядоченной последовательности — это тип, который можно индексировать, имеет длину и имеет оператор равенства.
| Аргументы | |
|---|---|
seq1 | Первая последовательность для сравнения. |
seq2 | Вторая последовательность для сравнения. |
seq_type | Ожидаемый тип данных последовательностей или None, если тип данных не должен проверяться. |
msg | Необязательное сообщение для использования при ошибке вместо списка различий. |
assertSequenceStartsWith
assertSequenceStartsWith(
prefix, whole, msg=None
)
Утверждение равенства для начала упорядоченных последовательностей.
Если префикс пустая последовательность, будет выброшено исключение, если whole также пустая последовательность.
Если префикс не последовательность, будет выброшено исключение, если первый элемент whole не совпадает.
| Аргументы | |
|---|---|
prefix | Последовательность, ожидаемая в начале параметра whole. |
whole | Последовательность, в которой нужно искать префикс. |
msg | Необязательное сообщение для отчёта об ошибке. |
assertSetEqual
assertSetEqual(
set1, set2, msg=None
)
Утверждение равенства для множеств.
| Аргументы | |
|---|---|
set1 | Первое множество для сравнения. |
set2 | Второе множество для сравнения. |
msg | Необязательное сообщение для использования при ошибке вместо списка различий. |
assertSetEqual использует утиную типизацию для поддержки различных типов множеств и оптимизирован для множеств (параметры должны поддерживать метод difference).
assertShapeEqual
assertShapeEqual(
np_array, tf_tensor, msg=None
)
Утверждает, что у Numpy ndarray и TensorFlow тензора одинаковая форма.
| Аргументы | |
|---|---|
np_array | Numpy ndarray или Numpy скаляр. |
tf_tensor | Tensor. |
msg | Необязательное сообщение для отчёта об ошибке. |
| Исключения | |
|---|---|
TypeError | Если у аргументов неправильный тип. |
assertStartsWith
assertStartsWith(
actual, expected_start, msg=None
)
Утверждает, что actual.startswith(expected_start) равно True.
| Аргументы | |
|---|---|
actual | str |
expected_start | str |
msg | Необязательное сообщение для отчёта об ошибке. |
assertTotallyOrdered
assertTotallyOrdered(
*groups, **kwargs
)
Утверждает, что полное упорядочение реализовано правильно.
Например, предположим, что у вас есть класс A, который сравнивает только по атрибуту x. Для краткости опущены сравнители, отличные от lt.
class A(object): def init(self, x, y): self.x = x self.y = y
def hash(self): return hash(self.x)
def lt(self, other): try: return self.x < other.x except AttributeError: return NotImplemented
assertTotallyOrdered проверит, что экземпляры можно правильно упорядочить. Например,
self.assertTotallyOrdered( [None], # None должен идти перед всем остальным. [1], # Целые числа сортируются раньше. [A(1, 'a')], [A(2, 'b')], # 2 идёт после 1. [A(3, 'c'), A(3, 'd')], # Второй аргумент не имеет значения. [A(4, 'z')], ['foo']) # Строки сортируются последними.
| Аргументы | |
|---|---|
*groups | Список групп элементов. Каждая группа элементов — это список объектов, которые равны. Элементы в каждой группе должны быть меньше элементов в следующей группе. Например, эти группы полностью упорядочены: [None], [1], [2, 2], [3]. **kwargs: необязательный аргумент msg может быть передан. |
assertTrue
assertTrue(
expr, msg=None
)
Проверить, что выражение истинно.
assertTupleEqual
assertTupleEqual(
tuple1, tuple2, msg=None
)
Утверждение равенства для кортежей.
| Аргументы | |
|---|---|
tuple1 | Первый кортеж для сравнения. |
tuple2 | Второй кортеж для сравнения. |
msg | Необязательное сообщение для использования при ошибке вместо списка различий. |
assertUrlEqual
assertUrlEqual(
a, b, msg=None
)
Утверждает, что URL-адреса равны, игнорируя порядок параметров запроса.
assertWarns
assertWarns(
expected_warning, *args, **kwargs
)
Не выполняется, если предупреждение класса warnClass не вызывается вызываемой функцией при вызове с указанными позиционными и ключевыми аргументами. Если вызывается другой тип предупреждения, он не будет обработан: в зависимости от других правил фильтрации предупреждений, он может быть заглушен, выведен на печать или поднят в виде исключения.
Если вызван без вызываемой функции и аргументов, вернёт объект контекста, используемый так::
with self.assertWarns(SomeWarning):
do_something()
Необязательный ключевой аргумент 'msg' может быть передан, когда assertWarns используется как объект контекста.
Объект контекста сохраняет ссылку на первое соответствующее предупреждение в качестве атрибута 'warning'; аналогично, атрибуты 'filename' и 'lineno' предоставляют информацию о строке кода Python, из которой было вызвано предупреждение. Это позволяет вам проверить предупреждение после утверждения::
with self.assertWarns(SomeWarning) as cm:
do_something()
the_warning = cm.warning
self.assertEqual(the_warning.some_attribute, 147)
assertWarnsRegex
assertWarnsRegex(
expected_warning, expected_regex, *args, **kwargs
)
Утверждает, что сообщение в сгенерированном предупреждении соответствует регулярному выражению. Основной функционал аналогичен assertWarns() с добавлением, что только предупреждения, сообщения которых также соответствуют регулярному выражению, считаются успешными совпадениями.
| Аргументы | |
|---|---|
expected_warning | Ожидаемый класс предупреждения. |
expected_regex | Регулярное выражение (объект re.Pattern или строка), ожидаемое в сообщении об ошибке. |
args | Функция для вызова и дополнительные позиционные аргументы. |
kwargs | Дополнительные ключевые аргументы. |
msg | Необязательное сообщение, используемое в случае ошибки. Может быть использовано только при использовании assertWarnsRegex в качестве менеджера контекста. |
assert_
assert_(
*args, **kwargs
)
cached_session
@contextlib.contextmanager
cached_session(
graph=None, config=None, use_gpu=False, force_gpu=False
)
Возвращает сеанс TensorFlow для использования в тестовых задачах.
Этот метод отличается от self.session(): по соображениям производительности cached_session по умолчанию повторно использует тот же сеанс в пределах одного теста. Сеанс, возвращаемый этой функцией, будет закрыт только в конце теста (в функции TearDown).
Используйте use_gpu и force_gpu параметры для управления тем, где выполняются операции. Если force_gpu равно True, все операции привязаны к /device:GPU:0. В противном случае, если use_gpu равно True, TensorFlow пытается запустить как можно больше операций на GPU. Если оба force_gpu anduse_gpu` равны False, все операции привязаны к процессору.
Пример:
class MyOperatorTest(test_util.TensorFlowTestCase):
def testMyOperator(self):
with self.cached_session(use_gpu=True) as sess:
valid_input = [1.0, 2.0, 3.0, 4.0, 5.0]
result = MyOperator(valid_input).eval()
self.assertEqual(result, [1.0, 2.0, 3.0, 5.0, 8.0]
invalid_input = [-1.0, 2.0, 7.0]
with self.assertRaisesOpError("negative input not supported"):
MyOperator(invalid_input).eval()
| Аргументы | |
|---|---|
graph | Необязательный граф для использования во время возвращаемого сеанса. |
config | Необязательная конфигурация config_pb2.ConfigProto для настройки сеанса. |
use_gpu | Если True, попытаться выполнить как можно больше операций на GPU. |
force_gpu | Если True, привязать все операции к /device:GPU:0. |
| Возвращаемые значения | |
|---|---|
| Объект Session, который должен использоваться как менеджер контекста для окружения кода построения и выполнения графа в тестовом случае. |
captureWritesToStream
@contextlib.contextmanager
captureWritesToStream(
stream
)
Менеджер контекста, который захватывает записи в заданном потоке.
Этот менеджер контекста захватывает все записи в заданном потоке внутри объекта CapturedWrites. При создании этого менеджера контекста он возвращает объект CapturedWrites. Захваченное содержимое можно получить, вызвав .contents() на объекте CapturedWrites.
Для работы этой функции поток должен иметь дескриптор файла, который можно изменить с помощью os.dup и os.dup2, и поток должен поддерживать метод .flush(). Примеры таких потоков – стандартные потоки Python sys.stdout и sys.stderr. Обратите внимание, что это не работает в Colab или Jupyter notebooks, так как они используют альтернативные потоки stdout.
Пример:
class MyOperatorTest(test_util.TensorFlowTestCase):
def testMyOperator(self):
input = [1.0, 2.0, 3.0, 4.0, 5.0]
with self.captureWritesToStream(sys.stdout) as captured:
result = MyOperator(input).eval()
self.assertStartsWith(captured.contents(), "This was printed.")
| Аргументы | |
|---|---|
stream | Поток, записи которого необходимо захватить. Этот поток должен иметь дескриптор файла, поддерживать запись через использование этого дескриптора и иметь метод .flush(). |
| Возвращаемые значения | |
|---|---|
Объект CapturedWrites , содержащий все записи в указанном потоке, сделанные в ходе этого контекста. |
checkedThread
checkedThread(
target, args=None, kwargs=None
)
Возвращает обёртку потока, которая гарантирует успешное завершение «target».
Этот метод следует использовать для создания всех потоков в тестовых случаях, так как в противном случае существует риск того, что поток завершится неудачно незаметно и/или утверждения, сделанные в потоке, не будут учтены.
| Аргументы | |
|---|---|
target | Выполняемый объект, который будет выполняться в потоке. |
args | Кортеж аргументов для вызова target. По умолчанию – (). |
kwargs | Словарь ключевых аргументов для вызова target. По умолчанию – {}. |
| Возвращаемые значения | |
|---|---|
| Обёртка для threading.Thread, поддерживающая методы start() и join(). |
countTestCases
countTestCases()
create_tempdir
create_tempdir(
name=None, cleanup=None
)
Создаёт временную директорию, специфичную для теста.
Примечание: Директория и её содержимое будут рекурсивно очищены перед созданием. Это гарантирует, что не будет состояния по умолчанию.
Это создаёт именованную директорию на диске, изолированную для данного теста, и она будет корректно удалена по окончании теста. Это позволяет избежать нескольких проблем, связанных с созданием временных директорий в тестах, а также упрощает настройку директорий и проверку их содержимого. Например:
def test_foo(self):
out_dir = self.create_tempdir()
out_log = out_dir.create_file('output.log')
expected_outputs = [
os.path.join(out_dir, 'data-0.txt'),
os.path.join(out_dir, 'data-1.txt'),
]
code_under_test(out_dir)
self.assertTrue(os.path.exists(expected_paths[0]))
self.assertTrue(os.path.exists(expected_paths[1]))
self.assertEqual('foo', out_log.read_text())
См. также: create_tempfile() для создания временных файлов.
| Аргументы | |
|---|---|
name | Необязательное имя директории. Если не указано, будет сгенерировано уникальное имя. |
cleanup | Необязательная политика очистки, определяющая, когда и как удалить директорию (и всё её содержимое) по завершении теста. Если None, используется self.tempfile_cleanup. |
| Возвращаемые значения | |
|---|---|
| _TempDir, представляющий созданную директорию; см. документацию класса _TempDir для использования. |
create_tempfile
create_tempfile(
file_path=None, content=None, mode='w', encoding='utf8',
errors='strict', cleanup=None
)
Создаёт временный файл, специфичный для теста.
Это создаёт именованный файл на диске, изолированный для данного теста, и он будет корректно удалён по завершении теста. Это позволяет избежать нескольких проблем, связанных с созданием временных файлов в тестах, а также упрощает настройку файлов, запись в них данных, чтение и проверку их содержимого в случае сбоя теста. Например:
def test_foo(self):
output = self.create_tempfile()
code_under_test(output)
self.assertGreater(os.path.getsize(output), 0)
self.assertEqual('foo', output.read_text())
Примечание: Файл будет обнулён. Это гарантирует отсутствие исходного состояния. ПРИМЕЧАНИЕ: Если файл уже существует, он будет сделан доступным для записи и перезаписан.
См. также: create_tempdir() для создания временных директорий и _TempDir.create_file для создания файлов внутри временной директории.
| Аргументы | |
|---|---|
file_path | Необязательный путь к временному файлу. Если не указан, будет сгенерировано уникальное имя файла. Разрешены слеши в имени; любые отсутствующие промежуточные директории будут созданы. ПРИМЕЧАНИЕ: Этот путь будет очищен, включая любые директории в пути, например, 'foo/bar/baz.txt' будет rm -r foo. |
content | Необязательная строка или байты, которые будут первоначально записаны в файл. Если не указано, создаётся пустой файл. |
content | Строка режима, которая будет использоваться при записи содержимого. Используется только если content не пуста. |
encoding | Кодировка, которая будет использоваться при записи строкового содержимого. Используется только если content является текстом. |
errors | Способ обработки ошибок кодирования текста в байты. Используется только если content является текстом. |
cleanup | Необязательная политика очистки, определяющая, когда и как удалить директорию (и всё её содержимое) по завершении теста. Если None, используется self.tempfile_cleanup. |
| Возвращаемые значения | |
|---|---|
| _TempFile, представляющий созданный файл; см. документацию класса _TempFile для использования. |
debug
debug()
Выполняет тест без сбора ошибок в TestResult
defaultTestResult
defaultTestResult()
doCleanups
doCleanups()
Выполняет все функции очистки. Обычно вызывается после tearDown.
enter_context
enter_context(
manager
)
Возвращает значение CM после регистрации его в стеке выхода.
Ввод контекста помещает его в стек контекстов. Контекст выходит, когда тест завершается. Контексты выходят в обратном порядке ввода. Они всегда будут выходить независимо от успеха/неудачи теста. Стек контекстов специфичен для выполняемого теста.
Это полезно для устранения шаблонного кода для каждого теста, когда используются менеджеры контекста. Например, вместо того, чтобы добавлять декоратор к каждому тесту с @mock.patch, просто выполните self.foo = self.enter_context(mock.patch(...))' insetUp()`.
Примечание: Менеджеры контекстов всегда будут выходить без каких-либо ошибок. Это неудобный аспект реализации из-за особенностей работы unittest.
| Аргументы | |
|---|---|
manager | Менеджер контекста, который необходимо запустить. |
evaluate
evaluate(
tensors
)
Вычисляет тензоры и возвращает значения NumPy.
| Аргументы | |
|---|---|
tensors | Тензор или вложенный список/кортеж тензоров. |
| Возвращаемые значения | |
|---|---|
| Значения тензоров NumPy. |
fail
fail(
msg=None, prefix=None
)
Немедленно завершается с указанным сообщением, необязательно с префиксом.
failIf
failIf(
*args, **kwargs
)
failIfAlmostEqual
failIfAlmostEqual(
*args, **kwargs
)
failIfEqual
failIfEqual(
*args, **kwargs
)
failUnless
failUnless(
*args, **kwargs
)
failUnlessAlmostEqual
failUnlessAlmostEqual(
*args, **kwargs
)
failUnlessEqual
failUnlessEqual(
*args, **kwargs
)
failUnlessRaises
failUnlessRaises(
*args, **kwargs
)
get_temp_dir
get_temp_dir()
Возвращает уникальную временную директорию для использования тестом.
Если вы вызываете этот метод несколько раз во время выполнения теста, он вернёт ту же папку. Однако при разных запусках директории будут отличаться. Это гарантирует, что при разных запусках тесты не смогут загрязняют окружение друг друга. Если вам нужны несколько уникальных директорий в рамках одного теста, вы должны использовать tempfile.mkdtemp следующим образом: tempfile.mkdtemp(dir=self.get_temp_dir()):
| Возвращаемые значения | |
|---|---|
| Строка, путь к уникальной временной директории, созданной для этого теста. |
id
id()
run
run(
result=None
)
session
@contextlib.contextmanager
session(
graph=None, config=None, use_gpu=False, force_gpu=False
)
Менеджер контекста для сессии TensorFlow для использования в выполнении тестов.
Обратите внимание, что это задаст эту сессию и график в качестве глобальных значений по умолчанию.
Используйте опции use_gpu и force_gpu для управления тем, где выполняются операции. Если force_gpu равно True, все операции закреплены за /device:GPU:0. В противном случае, если use_gpu равно True, TensorFlow пытается выполнить как можно больше операций на GPU. Если оба force_gpu anduse_gpu` равны False, все операции закреплены за CPU.
Пример:
class MyOperatorTest(test_util.TensorFlowTestCase):
def testMyOperator(self):
with self.session(use_gpu=True):
valid_input = [1.0, 2.0, 3.0, 4.0, 5.0]
result = MyOperator(valid_input).eval()
self.assertEqual(result, [1.0, 2.0, 3.0, 5.0, 8.0]
invalid_input = [-1.0, 2.0, 7.0]
with self.assertRaisesOpError("negative input not supported"):
MyOperator(invalid_input).eval()
| Аргументы | |
|---|---|
graph | Необязательный граф для использования во время возвращаемой сессии. |
config | Необязательный объект config_pb2.ConfigProto для настройки сессии. |
use_gpu | Если True, попытаться выполнить как можно больше операций на GPU. |
force_gpu | Если True, закрепить все операции за /device:GPU:0. |
| Возвращаемые значения | |
|---|---|
| Объект Session, который следует использовать в качестве контекстного менеджера для окружения кода построения и выполнения графа в тесте. |
setUp
setUp()
Метод для настройки тестовой среды перед её использованием.
setUpClass
@classmethod setUpClass()
Метод для настройки тестовой среды класса перед запуском тестов в классе.
shortDescription
shortDescription()
Форматирует имя тестового метода и первую строку его документации.
Если документация отсутствует, возвращает только имя метода.
Этот метод переопределяет unittest.TestCase.shortDescription(), который возвращает только первую строку документации, скрывая имя теста при сбое.
| Возвращаемые значения | |
|---|---|
desc | Краткое описание тестового метода. |
skipTest
skipTest(
reason
)
Пропустить этот тест.
subTest
@contextlib.contextmanager
subTest(
msg=_subtest_msg_sentinel, **params
)
Возвращает контекстный менеджер, который вернет заключённый блок кода в подтесте, идентифицированный необязательным сообщением и параметрами ключевых слов. Ошибка в подтесте помечает тестовый случай как ошибочный, но возобновляет выполнение в конце заключённого блока, позволяя выполнить дальнейший тестовый код.
tearDown
tearDown()
Метод для разборки тестовой среды после её тестирования.
tearDownClass
@classmethod tearDownClass()
Метод для разборки тестовой среды класса после выполнения всех тестов в классе.
test_session
@contextlib.contextmanager
test_session(
graph=None, config=None, use_gpu=False, force_gpu=False
)
Используйте cached_session вместо этого. (устаревший)
__call__
__call__(
*args, **kwds
)
Вызвать self как функцию.
__eq__
__eq__(
other
)
Возвращает self==value.
| Переменные класса | |
|---|---|
| longMessage | True |
| maxDiff | 1600 |
| tempfile_cleanup | |
© 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/r2.4/api_docs/python/tf/test/TestCase