1

test.py

# write code to test the views.
from django.test import Client

# import nose for tests.
import nose.tools as noz

class TestSettings(object):
    """ test the nose test related setup """

    def setup(self):
        self.client = Client()

    def testTestUser(self):
        """ Tests if the django user 'test' is setup properly."""
        # login the test user
        response = self.client.login(username=u'test', password=u'test')    
        noz.assert_equal(response, True)

このコードを管理コマンドから実行すると、次の出力が得られます。

    $ ./manage.py test <app-name>
    nosetests --verbosity 1 <app-name>
    Creating test database for alias 'default'...
    F
    ======================================================================
    FAIL: Tests if the django user 'test' is setup properly.
    ----------------------------------------------------------------------
    Traceback (most recent call last):
       File "/<python-sitepackages-dir-path>/nose/case.py",                                                                                       line 197, in runTest
       self.test(*self.arg)
       File "<application-path>/tests.py", line 28, in testTestUser
       noz.assert_equal(response, True)
    AssertionError: False != True

    ----------------------------------------------------------------------

    Ran 1 test in 0.008s

    FAILED (failures=1)
    Destroying test database for alias 'default'...

同じコマンドを django シェルで実行すると、次のようになります。

    $ ./manage.py shell
    Python 2.6.6 (r266:84292, Sep 11 2012, 08:28:27) 
    [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from django.test import Client
    >>> 
    >>> import nose.tools as noz
    >>> 
    >>> client = Client()
    >>> response = client.login(username=u'test', password=u'test')
    >>> noz.assert_equal(response, True)
    >>> 
    >>> 
    >>> response
    True
    >>> 

ユーザー 'test' は、現在のシナリオの django でアクティブです。

管理コマンドの実行中にこのエラー アサーションが表示されるのはなぜですか?

4

2 に答える 2

0

テスト用のユーザー名testとパスワードでユーザーを作成していますか? testまたはフィクスチャをロードしますか?私は賭けない。

シェルを使用しているときは、settings.py のデータベースに対してログインしています。テスト中は、すべてのテストの開始時に空であるテスト データベースを使用しているため、ユーザーは存在しません。

ユーザーsetUpを作成できます

from django.contrib.auth.models import User
User.objects.create('test', 'test@test.com', 'test')

@Kevin Londonも指摘したように

あなたのセットアップコマンドは

setUpTestCase、しかし、それぞれがclientデフォルトでを持っているので、それとはあまり関係がないと思います。

于 2013-04-19T17:59:28.340 に答える