Pycharm и unittest не работают

У меня проблема с PYCharm 3.0.1. Я не могу запускать базовые модульные тесты.

Вот мой код:

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

Невозможно подключить репортер тестирования к платформе тестирования или среда тестирования неожиданно завершает работу

Также говорит

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 Установлен

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: То же самое происходит с базовым использованием 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()

person drgn    schedule 27.11.2013    source источник
comment
Я столкнулся с этим в Pycharm, когда мой setUpClass выдал исключение.   -  person sourcedelica    schedule 08.07.2017
comment
Ниже добавлен новый ответ, который может помочь в вашем случае. Не могли бы вы проверить?   -  person whiletrue    schedule 17.01.2018


Ответы (7)


Вероятно, это связано с тем, что вы неправильно установили свою среду тестирования в диалоговом окне настроек.

введите описание изображения здесь

person Games Brainiac    schedule 28.11.2013
comment
После изменения JVM (Open to Sun) Пара перезагрузок и использование py.test вместо unittests (это все еще не работает). Я могу запустить свой тест внутри pycharm с фреймворком py.test. Также похоже, что у меня был устаревший пакет, который мне пришлось обновить с помощью setuptools. - person drgn; 28.11.2013
comment
Я вижу то, что, по моему мнению, является той же базовой проблемой в pycharm 3.x. В предыдущих версиях pycharm мой блок if __name__ == '__main__' выполнялся. Теперь это не так. Это приводит к сбоям в работе некоторых тестов при запуске под отладчиком. - person ; 11.01.2014

Хотя с исходным плакатом дело обстоит иначе, я хотел бы отметить, что это вызовет еще одна причина - тестовые функции, которые не начинаются со слова «тест».

class TestSet(unittest.TestCase):

    def test_will_work(self):
        pass

    def will_not_work(self):
        pass
person binarysubstrate    schedule 08.01.2015
comment
Это была моя проблема, и я громко рассмеялся, когда понял это. - person John Q; 25.05.2015
comment
также следите за отступом, меня не хватало из-за ошибки форматирования вырезать и вставить :) - person robert king; 23.04.2017
comment
Это устранило ту же проблему, что и у меня. Это действительно полезная информация. - person MNM; 23.03.2020

Определенно пичарм, повторяющийся сверху,

  • Выполнить -> Изменить конфигурации.
  • выберите экземпляры теста и нажмите красную кнопку «минус».
person shlomoa    schedule 15.06.2015
comment
скриншот поможет - person whiletrue; 17.01.2018

У меня точно такая же проблема. Оказалось, что факт распознавания отдельного теста был связан с именем файла. В моем случае test_calculate_kpi.py, который PyCharm не распознал как тест при переименовании в test_calculate_kpis.py, был немедленно распознан.

person MPacho    schedule 28.02.2018
comment
Переименование у меня тоже сработало. В моем случае в проекте было более одного файла с тем же именем, и переименование его, чтобы он был уникальным, исправил его. - person Matthew Strawbridge; 10.04.2018
comment
Да, файл, содержащий тест, должен начинаться с test_ - person Olha; 25.09.2019

4 шага для создания отчетов в формате html с помощью PyCharm и большинства средств запуска тестов по умолчанию (py.test, nosetest, unittest и т. Д.):

  1. убедитесь, что вы дали своим тестовым методам префикс 'test' (как указывалось ранее), например def test_run1()
  2. широко распространенный пример кода из документации пакета отчетов об испытаниях:

    import unittest
    import HtmlTestRunner
    
    class TestGoodnessOfFitTests(unittest.TestCase):
    
     def test_run1(self):
      ...
    
    if __name__ == '__main__':
     unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
    

    Этот код обычно находится в файле тестового класса, который содержит все модульные тесты и "основной" код ловушки. Этот код постоянно выдавал мне предупреждение Empty test suite. Поэтому удалите весь код if __name__ .... Теперь файл содержит только класс TestGoodnessOfFitTests. Теперь дополнительно

  3. создайте новый main.py в том же каталоге файла тестового класса и используйте следующий код:

     import unittest
     import HtmlTestRunner
     test_class = TestGoodnessOfFitTests()
     unittest.main(module=test_class, 
     testRunner=HtmlTestRunner.HTMLTestRunner(output='t.html'))
    
  4. Удалите старые конфигурации запуска, щелкните правой кнопкой мыши файл main.py и нажмите Run 'main'. Проверьте правильность настроек в Preferences -> Python Integrated Tools -> Default test runner (в моем случае py.test и нос работали)

Вывод:

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... 
person whiletrue    schedule 16.01.2018

Даже у меня была такая же проблема, я чувствовал, что рабочее пространство не обновлялось должным образом. Даже я сделал File-> Synchronize (Ctrl + Aly + y). Но это было не решение. Я просто переименовал имя своего тестового файла python и снова попытался выполнить код, он начал работать нормально.

person Kishor kumar R    schedule 31.07.2018

У меня такая же проблема. Файл был назван test_exercise_detectors.py (обратите внимание на множественное число «детекторы»), и он был упакован с именем test_exercise_detectors. Изменение имени файла на test_exercise_detector.py (сингулярный «детектор») устранило проблему.

person Steve Wehba    schedule 11.11.2019