2009-11-23 63 views
2

我很努力地在Google App Engine上使用Django 客户端类来运行单元测试。我下载GAEUnit(V2.0A Django的),我想用它作为我的测试框架(也许我应该宁愿被别人使用的东西?)如何在Google App Engine上测试Django视图?

我所有GAEUnit文件复制到我的项目的根的指示,和我修改我的app.yaml文件。目前的app.yaml看起来如下:

application: myapp 
version: 1 
runtime: python 
api_version: 1 

handlers: 
- url: /static 
    static_dir: static 

- url: /.* 
    script: django_bootstrap.py 

- url: /test.* 
    script: gaeunit.py 

我也修改settings.py添加gaeunit作为应用程序...(从settings.py片断)

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.contenttypes', 
    'gaeunit', 
) 

我的单元测试类位于“测试”文件夹,如下所示(很简单):

import unittest 

class Test(unittest.TestCase): 

    def testName(self): 
     self.assertTrue(False) 

if __name__ == "__main__": 
    #import sys;sys.argv = ['', 'Test.testName'] 
    unittest.main() 

然而,当我尝试通过导航到http://localhost:8080运行我的应用程序时,出现以下错误:

ViewDoesNotExist at/
Could not import gaeunit.gaeunit. Error was: No module named gaeunit 

gaeunit.py确实存在于该文件夹中。我究竟做错了什么?

回答

0

我设法弄清楚这里出了什么问题。我犯了两个错误:

  1. 的app.yaml,网址:/test.*必须是以前网址:/.*(否则/测试URL将匹配得到之前/.*到/test.*处理程序)
  2. 请注意将GAEUnit包中的所有文件复制到您的项目根目录中! GAEUnit文件夹包含一个urls.py文件,如果您不注意,它将覆盖您的文件。这发生在我的情况。我只是恢复了我的原始urls.py。
  3. 当Django的测试客户端工作,如果你打算访问response.template或response.context属性,你需要确保你打电话django.test.utils.setup_test_environment(),否则模板上下文将是Nothing。我在我的测试模块中调用了它,在底部。

结果:工作单元测试!

+0

您可以复制网址,但在您的urls.py包括(r'^ test',include('gaeunit.urls')),您还必须更改gaeunit.py中的测试路径_LOCAL_DJANGO_TEST_DIR ='test' – dhaval 2011-04-18 10:54:32

相关问题