json フィクスチャを Python 2.6/Django 1.4 単体テストにロードしようとしています。DjangoのTestCaseを使用してテストレベルで実行できますが、ロードに8〜10秒かかります(2Mのjson、それほど小さくなりません)。したがって、多数のテストを実行するのは非常に遅く、テスト データベースを 1 回だけロードしたいと考えています。を追加すると、Python 2.6で可能になるように見えますunittest2
が、私はそれを機能させていません。
# Works, but takes eight seconds per test.
class BaseStuff(django.test.testcases.TestCase):
fixtures = ['test_data']
def setUp(self):
# stuff
def test_one(self):
# stuff
# Doesn't work - but runs *really* fast.
class BaseStuff(unittest2.TestCase):
@classmethod
def setUpClass(cls): # Added in unittest2
fixtures = ['test_data']
print "in setupClass()" # Does print, so function is called.
setupModule()を試してもうまくいきませんでした。setup 関数は確実に呼び出されていますが、フィクスチャを認識していないようです。
したがって、Django の TestCase はフィクスチャを読み取り、unittest2 の TestCase はクラス/モジュール レベルで処理を行います。この操作を組み合わせて、クラス/モジュール レベルでフィクスチャを読み取る方法はありますか? 多重継承を試みましたが、データをロードできませんでした。
更新: @ robjohncox の提案に基づいて、このコードはモジュール レベルで:
from django.core import management
management.call_command('loaddata', 'test_data.json', verbosity=1, noinput=True)
データベースを作成しているようです。しかし、Django はテストごとに別のデータベースを作成しているように見えます (これは空です)。最初のデータベースを使用するように TestCase に指示する方法がわかりません (Django と unittest2 TestCase の両方を試しました)。