簡體   English   中英

如何在Google App Engine上對Django視圖進行單元測試?

[英]How do I unit test Django views on the Google App Engine?

我正在努力使用Google App Engine上的Django Client類運行單元測試。 我下載了GAEUnit(適用於Django的v2.0a),並試圖將其用作測試框架(也許我寧願使用其他功能?)

我按照指示將所有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',
)

我的單元測試類位於“ test”文件夾中,如下所示(非常簡單):

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確實存在於該文件夾中。 我究竟做錯了什么?

我設法弄清楚這里出了什么問題。 我犯了兩個錯誤:

  1. app.yaml中 ,url:/test.*必須 url:/.* 之前 (否則/ test URL將與/.*匹配,然后才能進入/test.*處理程序)
  2. 注意將所有文件從GAEUnit軟件包復制到項目根目錄! GAEUnit文件夾包含一個urls.py文件,如果您不注意,它將覆蓋您的文件。 以我為例。 我只是恢復了原始的urls.py。
  3. 使用django test Client時 ,如果要訪問response.template或response.context屬性,則需要確保調用django.test.utils.setup_test_environment() ,否則模板和上下文將為Nothing 我在底部的測試模塊中稱呼它。

結果:工作單元測試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM