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()