pythonフレームワークでは、docttestを用いてコントローラのテストを行うことができます。
単純な例をあげてみます。
def index(): """ Test for Addition >>> request.vars.numbers = (2,3,5) >>> index() 10 """ return sum(request.vars.numbers)
このように書いておき、web2py管理画面から編集=>テストと進むと、テストが実行されます。
ただし、doctest は実行結果を確認する、というテストなので、複雑なテストを書くには向いていません。
unittest を使用する場合は、python web2py.py -S アプリケーション名 -M -R テストコードのファイル
を実行します。例えば、python web2py.py -S addition -M -R applications/addition/tests/test.py
のように書きます。テストファイルにちょっと追加が必要です。
import unittest from gluon.globals import Request execfile("applications/addition/controllers/default.py") class TestAddition(unittest.TestCase): def setUp(self): request = Request() def testAdditin(self): request.vars["a"] = (2,3,5) self.assertEquals(10,index()) suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(TestAddition)) unittest.TextTestRunner(verbosity=2).run(suite)
一行目は、unittestモジュールの呼び出しです。二行目は、web2pyで使用するRequestを取得できるようにしています。三行目は、テストを実行する対象ファイルを指定します。四行目以降は、unittestを記述しています。