GAEのテスト方法まとめ中(未完)
探してみたら意外と見つからなかったので軽くまとめてみます。
激しく自分の備忘用まとめです。
Google App Engineでテスト駆動開発を行うための3つのTips — TRIVIAL TECHNOLOGIES 2.0を参考に今回は「その2 : テスト用のstub*1を使う」をやってみました。*2
試した題材はGoogle App EngineでのMemchaceの排他処理を書いてみるテストです。
フォルダ構成
root |--------main.py | |--------memcachespinlock.py | |--------\test | |--------各テストファイルを格納
サンプル
import os import sys import unittest BASE_DIR=os.path.abspath(os.path.dirname(__file__)) GAE_HOME = r'/usr/local/google_appengine' # GAEのモジュールが格納されているフォルダ sys.path.append(os.path.dirname(BASE_DIR)) sys.path.append(GAE_HOME) import memcachespinlock # API Proxyを呼び出し from google.appengine.api import apiproxy_stub_map # テストするサービスのstubを呼び出し(例はmemacache) from google.appengine.api.memcache import memcache_stub from google.appengine.api import memcache # GAE用のテストクラスを作成 class GAETestBase(unittest.TestCase): def setUp(self): # API Proxyを登録する(これは必須。ないとテスト実行時にエラーになる場合あり) apiproxy_stub_map.apiproxy =\ apiproxy_stub_map.APIProxyStubMap() # ダミーのmemcacheサービスを登録する apiproxy_stub_map.apiproxy.RegisterStub( \ 'memcache', memcache_stub.MemcacheServiceStub()) def tearDown(self): memcache.flush_all() class TestMemCache(GAETestBase): # こんな感じでテストを記述 def testSpinLockAcquire(self): memcache.add('test_lock', 0) isLocked = memcachespinlock._acquireLock('test_lock') self.assertEqual(isLocked, True) if __name__ == '__main__': #unittest.main() suite1 = unittest.TestLoader().loadTestsFromTestCase(TestMemCache) unittest.TextTestRunner(verbosity=2).run(suite1)