Подтвердить что ты не робот

Как получить текущее имя тестового теста из testuite в unittest

Как я могу получить текущее имя тестового теста, в то время как в коллекции testsuite есть 16 тестовых файлов. Тесты выполняются последовательно (в порядке добавления теста к коллекции testSuite). Когда я добавляю все тесты в коллекцию testSuite, я могу просмотреть этот объект, но как я могу получить в настоящее время выполнение теста во время выполнения тестов. Может быть, какая-то переменная хранит эту информацию?

Пример:

def suite():
    testSuite= unittest.TestSuite()
    testSuite.addTest(FlightsTestCases('test_sel__reservation_one_way_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_tair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_wizzair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_wizzair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_easyjet_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_ryanair_transfer'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_round_ryanair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_duplicated'))
    testSuite.addTest(FlightsTestCases('test_reservation_wrong_card_lowcost'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_credit_card'))
    testSuite.addTest(FlightsTestCases('test_sel_reservation_one_way_tair_wrong_credit_card'))

    return testSuite

if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

Тесты выполняются с использованием Selenium-RC framework.

4b9b3361

Ответ 1

unittest.TestCase.shortDescription()

Возвращает описание теста или None, если описание не было представлено. По умолчанию этот метод возвращает первую строку меток docstring, если они доступны, или None.

unittest.TestCase.id()

Верните строку, идентифицирующую конкретный тестовый пример. Обычно это полное имя тестового метода, включая имя модуля и класса.

Надеемся, что одно из них полезно для ваших нужд.

Ответ 2

unittest.TestCase._testMethodName

Пример кода:

import unittest


class BasicTests(unittest.TestCase):

    def test_print(self):
        print(self._testMethodName)

Ответ 3

У меня есть похожий вопрос, но тесты являются тестами многократного использования и используют функцию проверки. Когда что-то не получается, у меня есть функция проверки, которая делает то, что я хочу Например, запись неудачного теста в журнал. В примерах говорится, что call id() или _testMethodName (unittest.TestCase.id()), но ни один из них не работает для меня в Python 2.7. В Python я не знаю, как динамически получить активного бегуна unittest.

import unittest

def verify( expected, actual ):
    assert expected == actual, 'Failed: ' + str(unittest.TestCase.id())

# Reusable Test
def theTest( exp ):
    verify( exp, 'keith2' )

class SomeTests(unittest.TestCase):
        def test_one(self):
            theTest( 'keith' )

        def test_two(self):
            theTest( 'keith2')

if __name__ == '__main__':
    unittest.main( argv=sys.argv, testRunner = unittest.TextTestRunner(verbosity=2))