TestSuite не видит тесты, выводит сообшение Empty suite

В файле test_calc прописаны вот эти тесты:

import unittest
import calc


class CalcTest(unittest.TestCase):
    def test_add(self):
        self.assertEqual(calc.add(1, 2), 3)

    def test_sub(self):
        self.assertEqual(calc.sub(3, 2), 1)

А в файле test_suite вот такая проверка

import unittest
import test_calc

calcST = unittest.TestSuite()
calcST.addTest(unittest.TestLoader().loadTestsFromTestCase(test_calc.CalcTest))

runner = unittest.TextTestRunner(verbosity=2)
runner.run(calcST)

которая не работает почему-то, выдаёт сообщение Empty suite. Подскажите, пожалуйста, где ошибка?

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

Здесь видно, что тесты не подтянулись.


Ответы (1 шт):

Автор решения: insolor

Нужно запускать test_suite.py просто как скрипт, или с небольшой доработкой через python -m unittest.

Чтобы нормально запускалось через unittest, нужно обернуть часть кода в блок if __name__ == "__main__", чтобы он не запускался при импортировании (без этого будет дублирование вывода):

import unittest
import test_calc

calcST = unittest.TestSuite()
calcST.addTest(unittest.TestLoader().loadTestsFromTestCase(test_calc.CalcTest))

if __name__ == "__main__":
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(calcST)

После этого тест запускаете так:

python -m unittest test_suite.calcST

Вывод:

python -m unittest test_suite.calcST
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

Чтобы можно было запускать как тест через PyCharm, добавляете конфигурацию запуска "Python tests" - "Unittests" (не pytest):

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

Настройки такие:

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

Вывод при запуске:

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

→ Ссылка