Пихарм висит на юнит-тестах бесконечно, если есть заявление для печати - PullRequest
1 голос
/ 02 июля 2019

Я настроил новый проект PyCharm, чтобы проверить это. Несколько часов назад я мог печатать заявления повсюду без проблем.На данный момент наличие каких-либо операторов печати в любом проекте приводит к тому, что весь процесс вращается вечно, и в конечном итоге моя ОС автоматически закрывается командой code 137 SIGKILL 9.

Следующий код является наиболее урезаннымВ качестве демонстрации этого я мог бы придумать:

import unittest

def hellothere():
    pass

class TestTest(unittest.TestCase):
    def setUp(self):
        stuff = hellothere()
        print(stuff)

    def test(self):
        pass

Стоит отметить, что изменение stuff = hellothere() на stuff = str(hellothere()) и удаление печатных работ, а также возврат вместо печатных работ.

Я попытался настроить это в терминале, но когда я запускаю это в терминале, я получаю ValueError: no such test method in <class '__main__.TestTest'>: runTest.

dmesg reports low swap: killing largest compressed process with pid 6093 (python2.7) and size 1051 MB, но я не могу найти там никакой другой соответствующей информации.

Я использую информацию о pycharm verion ниже: enter image description here

и python 2.7.

1 Ответ

1 голос
/ 03 июля 2019

Странное поведение, может, у вас в уменьшенном примере нет того, что есть в вашем исходном коде?

Я пробовал этот код:

import unittest

def hellothere():
    pass

class TestTest(unittest.TestCase):
    def setUp(self):
        self.stuff = hellothere()
        print("this is", self.stuff)

    # fixed: you need test_ for test discovery 
    def test_smth(self):
        pass
        assert self.stuff is None    

if __name__ == '__main__':
    unittest.main()   

Он работает как python test_abc.py и python -m unittest test_abc со следующим результатом:

this is None                                                            
.                                                                       
----------------------------------------------------------------------  
Ran 1 test in 0.001s                                                    

OK                                                                      

Должно быть что-то еще, что заставляет тест идти в бесконечный цикл.Я бы пошел с попыткой запустить тесты в консоли без Pycharm для дальнейшей проверки.

Обновление: ниже приведено решение проблемы OP, оно связано с виртуальной средой.Мы до сих пор не знаем, что душило print() в юнит-тестах, но научились избегать этого.

Мой урок состоит в том, что в такой тяжелой среде IDE, как PyCharm, пытаются воспроизвести любую проблему в командной строке.Также кажется, что поддержка IntelliJ весьма отзывчива по аналогичным вопросам .

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

...