unittest для ни одного типа в python?
Мне просто интересно, как я буду тестировать функцию, которая ничего не возвращает. например, я имею эту функцию:
def is_in(char):
my_list = []
my_list.append(char)
и тогда, если бы я его протестировал:
class TestIsIn(unittest.TestCase):
def test_one(self):
''' Test if one character was added to the list'''
self.assertEqual(self.is_in('a'), and this is where I am lost)
Я не знаю, что утверждать, что функция равна, так как нет никакого возвращаемого значения, с которым я мог бы сравнить это.
РЕДАКТИРОВАТЬ: будет ли работать?
Ответы
Ответ 1
Все функции Python возвращают что-то. Если вы не укажете возвращаемое значение, возвращается None
. Поэтому, если ваша цель состоит в том, чтобы убедиться, что что-то не возвращает ценность, вы можете просто сказать
self.assertIsNone(self.is_in('a'))
(Тем не менее, это не может отличить функцию без явного возвращаемого значения и значение, которое return None
.)
Ответ 2
Пункт единичного теста - проверить что-то, что делает функция. Если он не возвращает значение, то что он на самом деле делает? В этом случае он, похоже, ничего не делает, поскольку my_list
является локальной переменной, но если ваша функция действительно выглядит примерно так:
def is_in(char, my_list):
my_list.append(char)
Затем вы захотите проверить, действительно ли char
добавлен в список. Ваш тест:
def test_one(self):
my_list = []
is_in('a', my_list)
self.assertEqual(my_list, ['a'])
Поскольку функция не возвращает значение, для нее нет точечного тестирования (если вам не нужно убедиться, что оно не возвращает значение).