3

私が取り組んでいるゲームアプリケーションで、他のアプリのモデルに一般的なリーダーボードを提供することを目的とした Django アプリとしてライブラリを作成しています。私のライブラリのクライアントは、私が作成している抽象基本クラスを拡張し、メソッドをオーバーライドして、実際にオブジェクトを集約するコードを提供する必要があります。

このグラフ アプリを自己完結型で疎結合にして、簡単にスピンオフしてオープンソース化できるようにしたいので、外部アプリのどのモデルにも依存しない単体テストを作成しようとしています。ただし、アプリの全体的な目的は、基本的に外部アプリのモデルからデータを集約することです。アプリ独自のダミー モデルをmodels.py作成することもできますが、ライブラリを使用するプロジェクトごとに未使用のテーブルが作成されるため、理想的ではないようです。これを行う理想的な方法はありますか?

4

1 に答える 1

4

これまでのところ、2つのオプションがあります。

オプション1:アンマネージモデルクラスを作成し、テストでは、データベーステーブルを手動で作成および破棄します。

オプション2(私が選択したもの):testsモジュールでテストモデルを宣言します。ここでのアドバイスに従い、syncdbテストメソッドでトリガーしsetUpてテーブルを作成します。テスト用に調整され、次のようになります。

from django.core.management import call_command
from django.db import models
from django.test import TestCase

class TestModel(models.Model):
    data = models.FloatField()

    class Meta:
        app_label = 'myapp'

class LibraryTests(TestCase):
    def setUp(self):
        super(LibraryTests, self).setUp()
        models.register_models('myapp', TestModel)
        call_command('syncdb')
于 2013-02-05T21:16:34.790 に答える