Pycharm и unittest не работают
у меня проблема с PYCharm 3.0.1 я не могу запускать базовые unittests.
вот мой код :
import unittest from MysqlServer import MysqlServer
class MysqlServerTest(unittest.TestCase):
def setUp(self):
self.mysqlServer = MysqlServer("ip", "username", "password", "db", port)
def test_canConnect(self):
self.mysqlServer.connect()
self.fail()
if __name__ == '__main__':
unittest.main()
вот все, что мне дал pycharm
не удалось подключить test reporter к test framework или test framework неожиданно выйти
тоже говорит
AttributeError: class TestLoader has no attribute '__init__'
и журнал событий:
2:14:28 PM Empty test suite
проблема в том, когда я запускаю вручную файл python (с pycharm, как скрипт)
----------------------------------------------------------------------
Ran 1 tests in 0.019s
FAILED (failures=1)
что нормально, я специально проваливаю тест. Я немного не понимаю, что происходит. здесь больше информации : Настройка - > интегрированные инструменты Python - >файл требований к пакету: / src / test Бегун теста по умолчанию: Unittests pyunit 1.4.1 установлен
Спасибо за любую помощь.
EDIT: то же самое происходит с основным использованием из unitests.py
import unittest
class IntegerArithmenticTestCase(unittest.TestCase):
def testAdd(self): ## test method names begin 'test*'
self.assertEquals((1 + 2), 3)
self.assertEquals(0 + 1, 1)
def testMultiply(self):
self.assertEquals((0 * 10), 0)
self.assertEquals((5 * 8), 40)
if __name__ == '__main__':
unittest.main()
6 ответов
Это, вероятно, потому, что вы не правильно установили свою платформу тестирования в диалоге настроек.
хотя это было не так с оригинальным плакатом, Я хотел бы отметить, что еще одна вещь, которая вызовет это тестовые функции, которые не начинаются со слова "тест".'
class TestSet(unittest.TestCase):
def test_will_work(self):
pass
def will_not_work(self):
pass
определенно pycharm thingy, повторяя сверху,
- Выполнить --> Изменить Конфигурации.
- выберите экземпляры теста и нажмите красную кнопку минус.
у меня точно такая же проблема. Оказалось, что факт распознавания индивидуального теста был связан с имя файла. В моем случае, test_calculate_kpi.py
, который PyCharm не распознал как тест при переименовании в test_calculate_kpis.py
, был признан сразу.
4 шага для создания html-отчетов с PyCharm и большинством тестовых бегунов по умолчанию (py.испытание, nosetest, unittest etc.):
- убедитесь, что вы даете свои методы тестирования префикс 'test' (как указывалось ранее другими), например
def test_run1()
-
широко распространенный пример кода из документации пакета отчетов по тесту -
import unittest import HtmlTestRunner class TestGoodnessOfFitTests(unittest.TestCase): def test_run1(self): ... if __name__ == '__main__': unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
этот код обычно находится в файле тестового класса, который содержит все unittests и "главный"ловец код. Этот код непрерывно выдавал предупреждение
Empty test suite
для меня. Следовательно,удалите все if _ _ name__ ... код. Теперь файл содержит толькоTestGoodnessOfFitTests
класса. Теперь, дополнительно -
создать новый main.py в том же каталоге файла тестового класса и используйте следующий код:
import unittest import HtmlTestRunner test_class = TestGoodnessOfFitTests() unittest.main(module=test_class, testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
удалите старые конфигурации запуска правой кнопкой мыши на main.py и нажмите
Run 'main'
. Проверьте правильные настройки в разделеPreferences -> Python Integrated Tools -> Default test runner
(в моем случае py.тест и нос работали)
выход:
Running tests...
----------------------------------------------------------------------
test_gaussian_dummy_kolmogorov_cdf_1 (tests.evaluation_tests.TestGoodnessOfFitTests) ... OK (1.033877)s
----------------------------------------------------------------------
Ran 1 test in 0:00:01
OK
Generating HTML reports...
даже у меня была такая же проблема, я чувствовал, что рабочая область не была устранена. Даже я сделал файл - > синхронизировать (Ctrl+Aly+y). Но это не выход. Я просто переименовал имя тестового файла python и снова попытался выполнить код, он начал работать нормально.