3

我正在尝试测试我的 django 项目,我有一个具有非常经典布局的应用程序,如下所示:

project
├── __init__.py
└── app
    ├── __init__.py
    ├── models.py
    ├── tests
    │   ├── __init__.py
    │   ├── models.py
    │   └── views.py
    └── views.py

在 manage.py 的父目录中使用 manage.py (根据 django 1.4 新布局)。

在 tests/__init__.py 我有类似的东西:

from project.app.tests.models import *
from project.app.tests.views import *

在 tests/models.py 我有经典的 python 测试(工作得很好),在 tests/views.py 我有硒测试。

现在当我这样做时:

python manage.py test project/app/tests/views.py

硒测试工作没有任何问题(他们现在失败了,但我正在努力)。但是当我这样做时:

python manage.py test project/app

一些常规测试正常启动,但在某些时候,firefox 启动,一切都冻结了,没有更多测试启动,firefox 和终端都没有发生任何事情。

我要补充一点,我的常规测试来自 unittest.TestCase(不是 django.test.TestCase),我的 selenium 测试来自 django.test.LiveServerTestCase,并且我使用的是 django 1.4.0、nose 1.2.1、django -鼻子 1.1 和硒 2.26.0。

有什么线索吗?

4

2 回答 2

0

我在某处读过(忘记了它的来源),您正在使用的组合需要 sqlite 的测试数据库别名(TEST_NAME)。并且不使用内存中的sqlite数据库。不确定您在测试时使用的是什么数据库,但也许这些信息有帮助?

我把它放在我的开发设置中:

DATABASES = {
    'default': {
        'NAME': os.path.join(BUILDOUT_DIR, 'var', 'sqlite', 'development.db'),
        # TEST_NAME is absolutely CRITICAL for getting django-nose-selenium
        # going with sqlite3. The default in-memory breaks everything.
        'TEST_NAME': os.path.join(BUILDOUT_DIR, 'var', 'sqlite', 'unittest.db'),
        'ENGINE': 'django.db.backends.sqlite3', 
        'USER': '',
        'PASSWORD': '',
        'HOST': '',  # empty string for localhost.
        'PORT': '',  # empty string for default.
        }
    }
于 2013-06-13T09:28:02.983 回答
0

如果您使用 selenium 的等待方法,则可能会阻止测试,直到满足特定条件。请参阅上面的 webdriver 文档。

于 2012-11-22T19:33:07.320 回答