技术开发 频道

django单元测试历险记

  如何才能找到你的测试案例呢?文档中说,会加载settings里INSTALLED_APPS的模块,并且在该模块目录的models.py和 tests.py中查找测试案例。因此,我在settings的INSTALLED_APPS里添加了'testdjango',testdjango目录中正好有tests.py。

  接下来要运行测试案例,由于安装文档的说明, 运行所有INSTALLED_APPS里的测试案例只要运行:

  python manage.py test

  如果想指定运行,可以:

  python manage.py test testdjango

  OK,运行一下,非常不幸,出现了如下异常:

  "You haven't set the DATABASE_ENGINE setting yet."

  数据库??测试案例为什么还需要设置数据库?回过头仔细看下文档,发现确实有test database一节,大概含义是会生成一个临时的测试数据库,名字是test_前缀,如果想改还可以设定TEST_DATABASE_NAME属性。如果是sqlite,则默认是:memory:方式,即记在内存的方式。为了简单起见,我设置一个sqlite的……

  DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.

  DATABASE_NAME = ':memory:' # Or path to database file if using sqlite3.

  DATABASE_USER = '' # Not used with sqlite3.

  DATABASE_PASSWORD = '' # Not used with sqlite3.

  DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.

  DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.

  再次执行,看到输出窗口开始输出了:

  Creating test database

  突然又是一个异常:

  " UnboundLocalError: local variable 'int_alias' referenced before assignment "

  这个问题让我google了好一阵,在djangoproject里还专门有一个ticket报了这个问题,但最后确认为不是django的bug不了了之。

  http://code.djangoproject.com/ticket/10930

0
相关文章