Python 使用标准Unittest测试Django:&x27;数据库包装器&x27;对象没有属性';数据库';

Python 使用标准Unittest测试Django:&x27;数据库包装器&x27;对象没有属性';数据库';,python,django,testing,Python,Django,Testing,我正在尝试分别测试我的Django测试文件,一个接一个,因为由于应用程序太多,每次运行后/manage.py test都会冻结5秒 这是我的测试(虽然还不是测试,只是处理请求): 但是,运行此命令,我会得到以下结果: ====================================================================== ERROR: test_bets_view (__main__.ViewTests) ---------------------------

我正在尝试分别测试我的Django测试文件,一个接一个,因为由于应用程序太多,每次运行后
/manage.py test
都会冻结5秒

这是我的测试(虽然还不是测试,只是处理请求):

但是,运行此命令,我会得到以下结果:

======================================================================
ERROR: test_bets_view (__main__.ViewTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/test/testcases.py", line 182, in __call__
    self._pre_setup()
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/test/testcases.py", line 754, in _pre_setup
    self._fixture_setup()
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/test/testcases.py", line 887, in _fixture_setup
    if not connections_support_transactions():
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/test/testcases.py", line 874, in connections_support_transactions
    for conn in connections.all())
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/test/testcases.py", line 874, in <genexpr>
    for conn in connections.all())
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/utils/functional.py", line 55, in __get__
    res = instance.__dict__[self.func.__name__] = self.func(instance)
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/db/backends/__init__.py", line 782, in supports_transactions
    self.connection.leave_transaction_management()
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/db/backends/__init__.py", line 338, in leave_transaction_management
    if managed == self.get_autocommit():
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/db/backends/__init__.py", line 345, in get_autocommit
    self.ensure_connection()
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/db/backends/__init__.py", line 133, in ensure_connection
    self.connect()
  File "/Users/1111/.virtualenvs/the_game/lib/python2.7/site-packages/django/db/utils.py", line 86, in __exit__
    db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
AttributeError: 'DatabaseWrapper' object has no attribute 'Database'
======================================================================
错误:测试\u下注\u视图(\u主\u.ViewTests)
----------------------------------------------------------------------
回溯(最近一次呼叫最后一次):
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/test/testcases.py”,第182行,在u调用中__
self._pre_setup()
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/test/testcases.py”,第754行,在_pre_设置中
自安装装置安装()
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/test/testcases.py”,第887行,在_fixture_设置中
如果没有连接,\u支持\u事务():
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/test/testcases.py”,第874行,在connections\u support\u事务中
用于连接中的conn。all())
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/test/testcases.py”,第874行,在
用于连接中的conn。all())
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/utils/functional.py”,第55行,在__
res=instance.\uuuuu dict\uuuuu[self.func.\uuuuuu name\uuuuuuu]=self.func(实例)
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/db/backends/_init__.py”,第782行,在supports_事务中
self.connection.leave\u事务管理()
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/db/backends/_init__.py”,第338行,在leave_事务管理中
如果托管==self.get\u autocommit():
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/db/backends/uuuu init_uuuuuuuuu.py”,第345行,在get_autocommit中
self.sure_连接()
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/db/backends/uuu init_uuu.py”,第133行,确保连接
self.connect()
文件“/Users/1111/.virtualenvs/the_game/lib/python2.7/site packages/django/db/utils.py”,第86行,在u退出中__
db_exc_type=getattr(self.wrapper.Database,dj_exc_type.\uu name_uuuuu)
AttributeError:“DatabaseWrapper”对象没有属性“Database”
项目本身工作正常,没有错误(
/manage.py runserver
),django测试也是如此(
/manage.py test../tests

我怎样才能解决这个问题


p、 这不是一个复制品。它的作者在标准Django测试中遇到了问题,而它在我的项目中运行良好。我的问题是第三方测试。

不幸的是,您所做的不足以初始化django的设置系统。您可以尝试以下方法:

from django.core.management import setup_environ
from mysite import settings

setup_environ(settings)

或者,您可以研究编写一个自定义管理命令(该命令将使设置系统已经初始化)来调用测试运行程序。

它的可能重复项不是重复项。当我运行
/manage.py test
时,一切都很正常。我的问题是-如何为非DJango特定的测试重现DJango环境。为什么需要在外部运行测试?“你有什么特别想要实现的吗?”Thomas我的应用程序中有大约50次迁移,它们减慢了本地Django测试。它说“创建测试数据库”,然后冻结5-10秒。这很烦人。如果我将这些迁移压缩成一个(我这样做了),测试速度会再次加快。但我不认为我能为我未来的项目做同样的事情,所以仍然需要找到解决方案。您是否尝试过在设置中设置sys.argv[2]=“test”:SKIP_SOUTH\u TESTS=True?
from django.core.management import setup_environ
from mysite import settings

setup_environ(settings)