论坛首页 编程语言技术论坛

GAE单元测试框架:GAEUnit

浏览 1896 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-03   最后修改:2011-03-03

    最近又开始在写自己的第三个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),写的很不错,但我还没有仔细研究,有空再试试。

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics