Python中'none'类型的单元测试
我该如何测试一个不返回任何值的函数呢?
比如,我有这样一个函数:
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
的函数。)