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 шт):
Нужно запускать 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):
Настройки такие:
Вывод при запуске: