GAE单元测试框架:GAEUnit

    最近又开始在写自己的第三个GAE应用了,吸取前两次的经验,这次在文档和测试上要多用点功夫了。

    说到测试,开发阶段的代码跑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,就会发现有一个很简洁的单元测试页面了。

gaeunit.PNG

    怎么样,很cool吧!如果你的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),写的很不错,但我还没有仔细研究,有空再试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值