2009-11-23 55 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

相關問題