ジャンゴ バージョン 1.3。
私は Django 単体テストが初めてです。最初のテストを作成しましたが、ログインが機能していないために失敗します。auth
この理由は、フィクスチャによって提供されるはずのユーザー アカウントがデータベースに含まれていないためだと確信しています。
私が書いたコードは次のとおりです。
from django.test import TestCase
from django.test.client import Client
class OrderCreateTest(TestCase):
fixtures = ['auth']
def setUp(self):
self.client = Client()
def testSelectProduct(self):
self.assertTrue(self.client.login(user='chris', password='password'),
'Unexpected login failure.')
response = self.client.get('/order/new/')
print response
self.client.logout()
def tearDown(self):
pass
def runTest(self):
pass
私が得ているテストの失敗は次のとおりです。
Creating test database for alias 'default' ('test_proj')...
Creating tables ...
...
Running post-sync handlers for application admin
...
Installing custom SQL ...
Installing indexes ...
Installing index for admin.LogEntry model
...
Running post-sync handlers for application admin
...
Loading 'initial_data' fixtures...
Checking '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/fixtures' for fixtures...
No xml fixture 'initial_data' in '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/fixtures'.
...
Checking absolute path for fixtures...
No xml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No xml fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No json fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No yaml fixture 'initial_data' in absolute path.
No fixtures found.
Destroying test database for alias 'default' ('test_proj')...
testSelectProduct (orpheus.orders.tests.ordercreate.OrderCreateTest) ... FAIL
======================================================================
FAIL: testSelectProduct (orpheus.orders.tests.ordercreate.OrderCreateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/path/to/ordercreate.py", line 24, in testSelectProduct
'Unexpected login failure.')
AssertionError: Unexpected login failure.
----------------------------------------------------------------------
Ran 1 test in 2376.829s
FAILED (failures=1)
Destroying test database for alias 'default' ('test_proj')...
データベースを使用した私の設定からのスニペット:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project',
'USER': 'project',
'PASSWORD': 'projectdb',
'TEST_NAME': 'test_project' } }
テスト コードを実行したところ、フィクスチャauth
が検出され、検出されたデータがどこかに保存されていることがわかります。テストを中断して mysql にドロップし、関連するテーブルにクエリを実行しましたが、それらはすべて空のままです (テスト コードはトランザクションを処理するセクションをスキップしているため、コミットを待つ必要はないと確信しています)。
フィクスチャが正しくロードされない原因は何ですか?
編集:フィクスチャのロードをテストするという素晴らしいアイデアがあり、成功しました:
$ ./manage.py loaddata auth
Installed 8 object(s) from 1 fixture(s)
ただし、これはフィクスチャの読み込みを修正する方法についてのアイデアを私に与えません。
編集:スーパーバキュオは、私がこれを試すことを提案したときに手がかりを提供しました:
./manage.py testserver -v 2 auth.json
出力は、フィクスチャを正しくロードすることを除いて、ほとんど同じです (mysql で確認済み)。
...
Installed 8 object(s) from 1 fixture(s)
Validating models...
0 errors found
Django version 1.3, using settings 'project.settings'
Running django-devserver 0.1.4
そこからどこへ行けばいいのかわからない。