Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Google应用程序引擎上对Django视图进行单元测试?_Python_Django_Google App Engine - Fatal编程技术网

Python 如何在Google应用程序引擎上对Django视图进行单元测试?

Python 如何在Google应用程序引擎上对Django视图进行单元测试?,python,django,google-app-engine,Python,Django,Google App Engine,我正在努力使用Google应用程序引擎上的Django客户端类运行单元测试。我下载了GAEUnit(Django的v2.0a),并试图将其用作我的测试框架(也许我更应该使用其他东西?) 我按照指示将所有GAEUnit文件复制到我的项目根目录中,并修改app.yaml文件。当前app.yaml如下所示: application: myapp version: 1 runtime: python api_version: 1 handlers: - url: /static static_di

我正在努力使用Google应用程序引擎上的Django客户端类运行单元测试。我下载了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的代码段)

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

但是,当我尝试通过导航到来运行应用程序时,它会失败,并出现以下错误:

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

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

我设法找出了这里的问题所在。我犯了两个错误:

  • 在app.yaml中,url:/test.*必须在url:/.*之前(否则在到达/test.*处理程序之前,/test url将与/*匹配)
  • 小心将GAEUnit包中的所有文件复制到项目根目录中!GAEUnit文件夹包含一个URL.py文件,如果您不注意,该文件将覆盖您的URL.py文件。我的情况就是这样。我只是恢复了我原来的url.py
  • 在使用django测试客户端时,如果要访问response.template或response.context属性,则需要确保调用django.test.utils.setup\u test\u environment(),否则模板和上下文将无效。我在我的测试模块中调用它,就在底部

  • 结果:工作单元测试

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

  • 在app.yaml中,url:/test.*必须在url:/.*之前(否则在到达/test.*处理程序之前,/test url将与/*匹配)
  • 小心将GAEUnit包中的所有文件复制到项目根目录中!GAEUnit文件夹包含一个URL.py文件,如果您不注意,该文件将覆盖您的URL.py文件。我的情况就是这样。我只是恢复了我原来的url.py
  • 在使用django测试客户端时,如果要访问response.template或response.context属性,则需要确保调用django.test.utils.setup\u test\u environment(),否则模板和上下文将无效。我在我的测试模块中调用它,就在底部

  • 结果:工作单元测试

    您可以复制url,但在您的url.py include(r'^test',include('gaeunit.url')中,您还必须更改gaeunit.py中的测试路径\u LOCAL\u DJANGO\u test\u DIR='test'您可以复制url,但在您的url.py include(r'^test',include('gaeunit.url')中,此外,您还必须更改gaeunit.py中的测试路径_LOCAL_DJANGO_test_DIR='test'
    import unittest
    
    class Test(unittest.TestCase):
    
        def testName(self):
            self.assertTrue(False)
    
    if __name__ == "__main__":
        #import sys;sys.argv = ['', 'Test.testName']
        unittest.main()
    
    ViewDoesNotExist at /
    Could not import gaeunit.gaeunit. Error was: No module named gaeunit