2

私は次のモデルを持っています:

class Poll(models.Model):

    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
             return self.question

そして次のテスト

from polls.models import Poll
from django.test import TestCase
from django.utils import timezone

class PollModelTest(TestCase):

    def test_poll_save(self):
        q = "What is the best OS?"
        pd = timezone.now()
        p = Poll(question=q,
                 pub_date=pd)
        p.save()
        polls = Poll.objects.all()
        self.assertEquals(polls.count(), 1)
        self.assertEquals(polls[0].question, q)

および次の設定:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
     'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'polls',
    'django_nose',

)

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
    '--with-coverage',
    '--cover-package=polls',
    '--with-progressive',
    '--verbosity=0',
    '--with-fixture-bundling',
] 

私が試してみるとpython manage.py test polls、テストは 2 回実行されます。出力は次のとおりです。

Creating test database for alias 'default'...
Name           Stmts   Miss  Cover   Missing
--------------------------------------------
polls              0      0   100%   
polls.models       6      0   100%   
--------------------------------------------
TOTAL              6      0   100%   

OK!  2 tests, 0 failures, 0 errors in 0.0s
Destroying test database for alias 'default'...

ただし、なしTEST_RUNNER = 'django_nose.NoseTestSuiteRunner'で試すと、テストは一度しか実行されません。出力は次のとおりです。

Creating test database for alias 'default'...
.
----------------------------------------------------------------------
Ran 1 test in 0.002s

OK
Destroying test database for alias 'default'...

何が悪いのか教えてください。django-nose がテストを 2 回実行するのはなぜですか?

OT: 同じモデルに対して、django_nose は unittest よりも時間がかかります。

編集:

フォルダ構造は次のとおりです。

├── database.sqlite
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── settings.py
│   ├── templates
│   │   ├── 404.html
│   │   ├── 500.html
│   │   └── base.html
│   ├── urls.py
│   └── wsgi.py
└── polls
    ├── __init__.py
    ├── models.py
    ├── tests
    │   ├── __init__.py
    │   └── test_models.py
    ├── urls.py
    └── views.py
4

1 に答える 1

3

おそらく、テストを 2 回インポートしています。ファイル構造は表示されませんでしたが、このテストは別のファイルにありimport、tests.py などで行うよりも優れている可能性があります。

于 2012-09-20T11:05:49.110 に答える