2013-02-14 10 views
11

私は、何も返さない関数のテストをどうやって行うのか不思議に思っていました。いいえがあるので、に等しいunittest for none pythonには何もありませんか?

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) 

私は機能を主張するのか分からない:

def is_in(char): 
    my_list = [] 
    my_list.append(char) 

と私はそれをテストした場合、その後:たとえば、私はこの機能を持っていると言います戻り値は と比較することができます。

EDIT:assertIn work?

答えて

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

ので、(あなたはそれが値を返さないことを確認してください必要がある場合を除き)そのためのポイントのテストはありません。

20

すべてのPython関数は何かを返します。戻り値を指定しない場合は、Noneが返されます。あなたの目標は、本当に何かが値を返さないことを確認することですのであれば、あなただけの

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

を言うことができます(ただし、これはreturn Noneを行い、明示的な戻り値と1せずに機能を区別することはできません)

関連する問題