Python unittest - Ran 0 тестов в 0.000s

Поэтому я хочу сделать этот код Ката для практики. Я хочу реализовать kata с tdd в отдельных файлах:

Алгоритм:

# stringcalculator.py  
def Add(string):
   return 1

и тесты:

# stringcalculator.spec.py 
from stringcalculator import Add
import unittest

class TestStringCalculator(unittest.TestCase):
    def add_returns_zero_for_emptyString(self):
        self.assertEqual(Add(' '), 0)

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

При запуске тестового файла я получаю:

Ran 0 tests in 0.000s

OK

Однако он должен вернуть один неудачный тест. Что мне здесь не хватает?

Ответ 1

Как указано в питона UnitTest документа:

Простейший подкласс TestCase будет просто реализовать метод тестирования (то есть метод, имя которого начинается с теста)

Поэтому вам нужно будет изменить имя метода на что-то вроде этого:

def test_add_returns_zero_for_emptyString(self):
    self.assertEqual(Add(' '), 0)

Ответ 2

Sidenote: Кроме того, имя файла, в котором находятся все тесты, должно начинаться с 'test_'

Ответ 3

Те же симптомы, но другая проблема. Убедитесь, что вы не перепутаете вкладки и пробелы для отступа. Проблема может возникнуть, когда вы копируете код с онлайн-ресурса и обновляете его для своих нужд. Поскольку вкладки и пробелы выглядят очень похожими в большинстве редакторов, тестовая функция может просто не быть определена правильно.

Ответ 4

У меня была похожая проблема. Моя основная причина была в том, что я поместил блок выполнения для unittest.main внутри класса Test. Это держало сообщения тестов RAN 0. Перемещение это вне класса работало.

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