0

Способ вывести имя теста PyUnit в методе setup()

11

Вопрос: Как в 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 ответ(ов)

0

Этот код 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

0

Вы можете использовать str(self.id()).split()[4]. Это можно найти здесь: документация Python по unittest.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь