我只是想知道如何测试一个不返回任何东西的函数。例如,说我有这个功能:
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)
我不知道断言该函数是什么等于,因为我没有返回值 可以比较它。
编辑:会断言工作吗?
答案 0 :(得分:26)
所有Python函数都返回一些东西。如果未指定返回值,则返回None
。因此,如果你的目标确实是确保某些东西不会返回值,那么你可以说
self.assertIsNone(self.is_in('a'))
(但是,这不能区分没有显式返回值的函数和执行return None
的函数。)
答案 1 :(得分:4)
单元测试的目的是测试函数的功能。如果它没有返回一个值,那么它实际上在做什么?在这种情况下,它似乎没有做任何事情,因为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'])
由于函数没有返回值,因此没有必要对它进行测试(除非你需要确保它没有返回值)。