2012-09-20 50 views
1

我有以下型號爲什麼Django-nose運行兩次?

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測試s 運行兩次。以下是輸出:

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運行兩次測試?

OT:django_nose需要更多的時間比單元測試,在相同的模型。

編輯:

這裏的文件夾結構:

├── 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 

回答

2

也許你有你的測試進口的兩倍。你沒有顯示你的文件結構,但也許你在單獨的文件中有這個測試,並且你在tests.py中做了import,或者類似的東西。

+0

更新了文件夾結構,請檢查! – user1629366

+0

@ user1629366那你在'polls/tests/__ init __。py'中有什麼?你在那裏導入test_models? – yakxxx

+0

'從test_models導入*'多數民衆贊成它。 – user1629366