Сбой при использовании тестера PyDev - PullRequest
1 голос
/ 25 июля 2011

Я создал модуль модульного тестирования по умолчанию в PyDev. Модуль выглядит следующим образом:

import unittest
class Test(unittest.TestCase):
    def setUp(self):
        pass


    def tearDown(self):
        pass


    def testName(self):
        self.assertEqual(1, 2) #here I expect to see failure message


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()

Затем я использую опцию «Run as -> Python unit-test» для выполнения модульных тестов. Все, что я вижу в консоли вывода, это следующие две строки:

Поиск файлов ... сделано.

Импорт тестовых модулей ...

А потом ничего. Eclipse ведет себя так, как будто тесты выполняются, но на самом деле ничего не происходит. Я могу нажать кнопку «Стоп», чтобы завершить тест, но если я ничего не сделаю, ничего не произойдет.

ПРИМЕЧАНИЕ что при поиске в сети я выяснил, что приведенный выше вывод должен включать имена файлов и модулей (см. это обсуждение , например)

Если я использую опцию «Запуск от имени -> запуск Python», тесты выполняются, как ожидается. Я уверен, что что-то упускаю из-за использования тестера PyDev, но не могу выяснить, что.

Изменение имен функций теста * с testName на test_name не решило проблему

Ответы [ 2 ]

0 голосов
/ 25 июля 2011

ОК, я нашел проблему.

Оказывается, что некоторые части кода инициализации моих модулей используют синтаксический анализ sys.argv[0]. Это работало нормально при использовании «Run As -> Python Run», так как sys.argv[0] содержал ожидаемый путь к исполняемой программе. При использовании «Запускать как -> модульные тесты Python», запущенная программа находится в «runfiles.py» в каталоге плагинов PyDev. Это неожиданное изменение вызвало бесконечный цикл, который я интерпретировал как «ничего не происходит». Я буду рассматривать это поведение как ошибку проектирования и буду пересматривать проблемные части моего кода.

0 голосов
/ 25 июля 2011

Я думаю (работая из памяти), что вы должны префикс имени теста с test_ (подчеркивание обязательно).

...