12.pythonのユニットテストモジュール——unittest
2016 ワード
現在のソフトウェア開発の過程で、テストは往々にして一つのプロジェクトの成否に関係している.だから、自分が書いたコードをどのようにテストするかを学ぶ必要があります.では、pythonはこの方面で何をすることができますか?
まず、独自のクラスファイルを作成します.
例1.widget.py
手動でユニットテストを行います.
手書きで作成されたこのテスト方法には多くの問題があります.
1.テストプログラムの書き方は一定の規範に従うことができなくて、10人のプログラマーは完全に異なるテストプログラムを書くことができます
2.プログラマー一人一人が自分の異なるテストクラスの方法を持っている場合、これらのテストされたクラスを維持するだけでは面倒で、テストクラスを維持することは言うまでもありません.
3.テスト用のコードはプログラム自体よりも多く、プログラマーの作業量を大幅に増加させる可能性があります.
だから、以上の点に基づいて、pythonは独自のフレームワークを発表して、これらの機能を完成させることができます.PyUnit
pythonのPyUnitテストフレームワークを使用します.
このユニットテストフレームワークを採用すると、pythonプログラマー全員が同じユニットテスト方法を使用できるようになり、テストプロセスは秩序ある動作になります.これがこのフレームワークがもたらす最大のメリットです.
python2.1以降のバージョンはpyUnitを標準モジュールとしており、追加のダウンロードは必要ありません.
参考資料http://pyunit.sourceforge.net/pyunit_cn.html
まず、独自のクラスファイルを作成します.
例1.widget.py
class Widget:
def __init__(self,size=(40,40)):
self._size=size
def getSize(self):
return self._size
def resize(self,width,height):
self._size=(width,height)
def dispose(self):
pass
手動でユニットテストを行います.
#-*-coding:UTF-8-*-
#python
from widget import Widget
class TestWidget:
def testSize(self):
expectedSize=(40,40)
widget=Widget()
if widget.getSize()==expectedSize:
print "test [Widget]:getSize works perfected!"
else:
print "test [Widget]:getSize doesn't work!"
#
if __name__=='__main__':
myTest=TestWidget()
myTest.testSize()
手書きで作成されたこのテスト方法には多くの問題があります.
1.テストプログラムの書き方は一定の規範に従うことができなくて、10人のプログラマーは完全に異なるテストプログラムを書くことができます
2.プログラマー一人一人が自分の異なるテストクラスの方法を持っている場合、これらのテストされたクラスを維持するだけでは面倒で、テストクラスを維持することは言うまでもありません.
3.テスト用のコードはプログラム自体よりも多く、プログラマーの作業量を大幅に増加させる可能性があります.
だから、以上の点に基づいて、pythonは独自のフレームワークを発表して、これらの機能を完成させることができます.PyUnit
pythonのPyUnitテストフレームワークを使用します.
#-*-coding:UTF-8-*-
from widget import Widget
import unittest
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget=Widget()
def tearDown(self):
self.widget=None
def testSize(self):
self.assertEqual(self.widget.getSize(),(40,40))
#
def suite():
suite=unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
return suite
#
if __name__=="__main__":
unittest.main(defaultTest='suite')
このユニットテストフレームワークを採用すると、pythonプログラマー全員が同じユニットテスト方法を使用できるようになり、テストプロセスは秩序ある動作になります.これがこのフレームワークがもたらす最大のメリットです.
python2.1以降のバージョンはpyUnitを標準モジュールとしており、追加のダウンロードは必要ありません.
参考資料http://pyunit.sourceforge.net/pyunit_cn.html