我正在努力使用 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 确实存在于该文件夹中。我做错了什么?
请您参考如下方法:
我设法弄清楚这里出了什么问题。我犯了两个错误:
- 在 app.yaml 中,url:/test.* 必须在 url:/.* 之前(否则/test URL 将匹配到/.*在到达/test.* 处理程序之前)
- 注意不要将 GAEUnit 包中的所有文件复制到您的项目根目录中! GAEUnit 文件夹包含一个 urls.py 文件,如果您不注意,该文件将覆盖您的文件。这发生在我的案例中。我只是恢复了原来的 urls.py。
- 在使用 django 测试 Client 时,如果您打算访问 response.template 或 response.context 属性,您需要确保调用 django.test.utils。 setup_test_environment(),否则模板和上下文将为 Nothing。我在我的测试模块中调用它,就在底部。
结果:工作单元测试!
