Подтвердить что ты не робот

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)

Я не знаю, что утверждать, что функция равна, так как нет никакого возвращаемого значения, с которым я мог бы сравнить это.

РЕДАКТИРОВАТЬ: будет ли работать?

4b9b3361

Ответ 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'])

Поскольку функция не возвращает значение, для нее нет точечного тестирования (если вам не нужно убедиться, что оно не возвращает значение).