unittest for python中没有类型?

时间:2013-02-14 05:09:20

标签: python unit-testing assertion nonetype

我只是想知道如何测试一个不返回任何东西的函数。例如,说我有这个功能:

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)

我不知道断言该函数是什么等于,因为我没有返回值 可以比较它。

编辑:会断言工作吗?

2 个答案:

答案 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'])

由于函数没有返回值,因此没有必要对它进行测试(除非你需要确保它没有返回值)。