2017-05-20 18 views
0

私は、特にPythonとunittestについて学んでいます。Unittestのサンプルが動作しない

私は機能がテストされている次の簡単な例を追跡しようとしているは、次のとおりです。

def get_formatted_name(first, last): 
    """Generate a neatly formatted name""" 
    full_name = first + ' ' + last 
    return full_name.title() 

とテストコードです:

import unittest 
from name_function import get_formatted_name 


class NamesTestCase(unittest.TestCase): 
    """Tests for 'name_function.py'""" 

    def test_first_last_name(self): 
     """Do names liike 'Janis Joplin' work """ 
     formatted_name = get_formatted_name('janis', 'joplin') 
     self.assertEqual(formatted_name, 'Janis Joplin') 

unittest.main() 

例によれば、これは罰金実行する必要がありますし、テストが正常に実行されたことを報告します。

私は次のエラーを取得しかし:

EE 
====================================================================== 
ERROR: test_name_function (unittest.loader._FailedTest) 
---------------------------------------------------------------------- 
AttributeError: module '__main__' has no attribute 'test_name_function' 

====================================================================== 
ERROR: true (unittest.loader._FailedTest) 
---------------------------------------------------------------------- 
AttributeError: module '__main__' has no attribute 'true' 

---------------------------------------------------------------------- 
Ran 2 tests in 0.000s 

FAILED (errors=2) 

Process finished with exit code 1 

残念ながら、私が間違って何が起こっているか見当がつかない!

答えて

2

ドキュメントごとに、次のコードを追加する必要があります。そうすれば、何よりもメインモジュールとして動作します。例hereが表示されます。

if __name__ == '__main__': 
    unittest.main() 
+0

私が次の例から完全に逃してくれてありがとう、私がそれを追加すると動作します。 – Bazman

+0

フォローアップとして、if __name__ == '__main__':が必要な理由を尋ねることができます。私はここで答えを見た:http://stackoverflow.com/questions/419163/what-does-if-name-main-doしかし、なぜそれがここで必要なのかはまだ不明ですか?確かに私は直接テストコードを実行しているので、それはすでに主な機能ですか?実際、これがif文のコードがトリガーされる理由です。だから、何も変わらないようですね? – Bazman

+1

これは実際には大きな問題です。しかし、私はそれに答えることができないと申し訳なく思っています。 – Jonathan

関連する問題