Способ вывести имя теста PyUnit в методе setup()
Вопрос: Как в Python с помощью pyunit сделать так, чтобы тесты выводили название текущего теста?
Я пытаюсь настроить свои юнит-тесты с использованием библиотеки unittest
в Python, и мне хотелось бы, чтобы во время выполнения каждого теста в логах отображалось название текущего теста. У меня есть следующий пример кода:
def setUp(self):
log.debug("Тест %s Начат" % (testname))
def test_example(self):
# выполняем действия
def test_example2(self):
# выполняем другие действия
def tearDown(self):
log.debug("Тест %s Завершен" % (testname))
Проблема заключается в том, что переменная testname
не определена, и я не знаю, как корректно получить название теста, который в данный момент выполняется.
Есть ли способ сделать это, чтобы в логах отображался правильный название запущенного теста? Спасибо!
2 ответ(ов)
Этот код self.id().split('.')[-1]
используется в контексте тестирования в Python, чтобы получить уникальный идентификатор теста, основанный на имени тестового метода.
Функция self.id()
возвращает строку, представляющую идентификатор текущего теста. Эта строка обычно выглядит как путь к методу теста в формате module_name.TestClass.test_method
. Метод split('.')
разбивает эту строку на части, используя точку в качестве разделителя, а [-1]
извлекает последний элемент списка, который соответствует имени тестового метода, то есть test_method
в нашем примере.
Таким образом, если вам нужно получить только имя метода без указания модуля и класса, то этот фрагмент кода идеально для этого подходит.
Документация по методу id()
доступна по следующей ссылке:
http://docs.python.org/library/unittest.html#unittest.TestCase.id
Для пользователей Python 2.7: https://docs.python.org/2.7/library/unittest.html#unittest.TestCase.id
Вы можете использовать str(self.id()).split()[4]
. Это можно найти здесь: документация Python по unittest.
Python Unit Testing: Автоматический запуск отладчика при сбое теста
Как протестировать, что функция Python вызывает исключение?
Где размещать юнит-тесты на Python? [закрыто]
Работают ли параметризованные тесты pytest с тестами на основе классов unittest?
Python - объект MagicMock не может быть использован в выражении 'await'