Странное поведение, может, у вас в уменьшенном примере нет того, что есть в вашем исходном коде?
Я пробовал этот код:
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 весьма отзывчива по аналогичным вопросам .
Я только что понял это.Виртуальная среда, которая использовалась в моем интерпретаторе проекта, была просто скопирована, когда я создавал новый проект, поэтому создание нового проекта не исправило это.Я создал новый интерпретатор с новой виртуальной средой, и проблема решена!