GAEユニットテストフレーム:GAEUnit


最近また自分の3番目のGAEアプリを書き始めましたが、前の2回の経験を吸収して、今回はドキュメントやテストにもっと工夫します.
テストといえば、開発段階のコード走unit testが必要であるはずなので、これを見つけました:GAEUnit.
その紹介を見てみましょう.
GAEUnit is a unit test framework that helps to automate testing of your Google App Engine application. With a single configuration change (it can be completed within 30 seconds), your unit tests can be run in the real GAE app server environment using a web browser.
GAEUnit is simple. It contains only one file: gaeunit.py. Just copy that file into your application directory and add the test URL to app.yaml.
 
GAEUnitの使い方もとても簡単で、gaeunit.py copyはGAEプロジェクトディレクトリに、app.yamlには次のような言葉が加わっています.
- url: /test.*
  login: admin  # This is important if you deploy the test directory in production!
  script: gaeunit.py

ここでlogin:adminとは、このsiteのadminユーザーだけがテストを呼び出すことができることを意味します.もちろん、開発段階では、手間を省きたいなら注釈してもいいです.
次に、GAEを実行してhttp://localhost:8080/testを見ると、簡潔なユニットテストページがあります.
どうだ、クールだろ!もしあなたのGAEがすでに配置されているならば、このようにappspotサイトでテストすることができて、login:adminを加えることを忘れないでください.そうしないと、誰もがあなたのユニットのテストページを見ることができます.もしあなたが好きなら、それでもいいです.
 
 
もちろん、GAEプロジェクトディレクトリにtestディレクトリを追加し、ユニットテストを開始する必要があります.ここではunittestを使用します.簡単な例を挙げます.
 
[serviceTest.py]
 
import unittest
from models import *
import service

class TestService(unittest.TestCase):
    def setUp(self):       
        pass   

    def test_saveUser(self):
        # create an user model
        user = User(name='Test')
        
        # add this user model into datastore and check
        service.saveUser(user)        
        other = service.getUserList({'name': 'Test'}).get()
        self.assertEqual('Test', other.name)
        
        # update the user model and check
        other.name='ABC'
        service.saveUser(other)
        self.assertEquals(None, service.getUserList({'name': 'Test'}))        
        self.assertEquals(1, service.getUserList({'name': 'ABC'}).count())

 
ここにはGAEでunittestを作るだけの文章もあります(http://ihere.appspot.com/2008/12/game-unittest-above-summary.html)、よく書けましたが、まだよく研究していないので、暇があればもう一度やってみます.