5

「dumpdata」を使用して作成したJSONフィクスチャとともに「manage.pytest」を使用しています

私の問題は、フィクスチャ内のいくつかのテーブルが非常に大きく(たとえば、米国のすべての都市の名前を含むテーブル)、テストの実行が非常に遅くなることです。

これらのテーブルのいくつかはプログラムによって変更されないため(たとえば、都市名を変更する必要はありません)、テストを実行するたびにこれらのテーブルを作成して破棄することはあまり意味がありません。

この種のデータを使用してこのコードをテストするためのより良い方法はありますか?

4

2 に答える 2

2

これが私の解決策でした:

class xxxx(TestCase):
    def setUp(self):
        import _mysql
        db=_mysql.connect('xxxx', 'xxxx', 'xxxx', "test_xxxxxxx")
        db.query(open('sql/xxxxxx.sql').read())

sqlファイルは、phpMyAdminを使用してエクスポートした一連の挿入ステートメントでした。SQLステートメントの読み取りは、JSONまたはYAMLフィクスチャをインポートするよりもはるかに高速です。これは確かに最も洗練されたソリューションではありませんが、機能しました。

Djangoテストを実行する前にSQLダンプをロードするの3番目の回答によると、このsqlファイルをappディレクトリ内の「sql」ディレクトリにドロップする必要があります。これは、「manage.py syncdb」を実行するときに本番データベースで機能しましたが、「installing custom SQL for」という行があっても、何らかの理由で「manage.pytest」を実行するときにこのデータが実際にテストデータベースにインポートされませんでしたxxxx.xxxxmodel'が出力に表示されました。そこで、setUp()内に独自のコードを記述しました

于 2010-05-29T03:49:03.133 に答える
1

のフレームワークをチェックする必要があります。テストフィクスチャをロードするときとティアアップするときをより細かく制御できるようです。

"nose supports fixtures at the package, module, class, and test case level, so expensive initialization can be done as infrequently as possible. See Fixtures for more."

さらに、nose用のdjangoプラグインがあるようです:Googleで

それがお役に立てば幸いです。

于 2010-05-18T08:25:25.220 に答える