Python中'none'类型的单元测试

26 投票
2 回答
35842 浏览
提问于 2025-04-17 15:51

我该如何测试一个不返回任何值的函数呢?

比如,我有这样一个函数:

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)

我不知道该用什么来判断这个函数的结果,因为它没有返回值可以让我比较。

那使用 assertIn 这个方法可以吗?

2 个回答

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

因为这个函数没有返回值,所以测试它也没有意义(除非你需要确认它确实没有返回值)。

39

所有的Python函数都会返回一个值。如果你没有指定返回的内容,默认会返回一个叫做None的东西。所以如果你的目标是确保某个函数不返回任何值,你可以直接这样写:

self.assertIsNone(self.is_in('a'))

(不过,这样做无法区分一个没有明确返回值的函数和一个返回None的函数。)

撰写回答