unittest for python中没有类型?

pep*_*ppy 18 python unit-testing assertion nonetype

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

def is_in(char):
    my_list = []
    my_list.append(char)
Run Code Online (Sandbox Code Playgroud)

如果我要测试它:

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)
Run Code Online (Sandbox Code Playgroud)

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

编辑:会断言工作吗?

Kev*_*nry 31

所有Python函数都返回一些东西 如果未指定返回值,None则返回.因此,如果您的目标确实是确保某些东西不会返回值,那么您可以这样说

self.assertIsNone(self.is_in('a'))
Run Code Online (Sandbox Code Playgroud)

(但是,这不能区分没有显式返回值的函数和没有显式返回值的函数return None.)


aqu*_*tae 4

单元测试的目的是测试函数所做的事情。如果它没有返回值,那么它实际上在做什么?在这种情况下,它似乎没有做任何事情,因为my_list它是一个局部变量,但如果你的函数实际上看起来像这样:

def is_in(char, my_list):
    my_list.append(char)
Run Code Online (Sandbox Code Playgroud)

然后您需要测试是否char实际附加到列表中。你的测试将是:

def test_one(self):
    my_list = []
    is_in('a', my_list)
    self.assertEqual(my_list, ['a'])
Run Code Online (Sandbox Code Playgroud)

由于该函数不返回值,因此无需对其进行任何测试(除非您需要确保它不返回值)。