6

django-revisions で遊んでいるとき、いくつかの初期テストを作成しています。一部の API とビュー コードがリビジョンを正しく保存することをテストできるようにしたいと考えています。ただし、削除されたバージョンを保存するための基本的なテストすら取得できません。

import reversion
from django.db import transaction
from django import test
from myapp import models

class TestRevisioning(test.TestCase):
    fixtures = ['MyModel']
    def testDelete(self):
        object1 = models.MyModel.objects.first()
        with transaction.atomic():
             with reversion.create_revision():
                 object1.delete()
        self.assertEquals(reversion.get_deleted(models.MyModel).count(), 1)

削除された QuerySet の長さを次のようにチェックすると、これは失敗します。

AssertionError: 0 != 1

私の仮説は、モデルの最初のリビジョンを作成する必要があるというものです ( と同等のことを行います./manage.py createinitialrevisions)。これが問題である場合、テストで最初のリビジョンを作成するにはどうすればよいですか? それが問題でない場合、他に何を試すことができますか?

4

2 に答える 2

4

したがって、解決策は非常に簡単です。オブジェクトをリビジョン管理下に保存しました。

# imports same as question

class TestRevisioning(test.TestCase):
    fixtures = ['MyModel']

    def testDelete(self):
        object1 = models.MyModel.objects.first()
        # set up initial revision
        with reversion.create_revision():
            object1.save()
        # continue with remainder of the test as per the question.
        # ... etc.

オーバーライドしようとしまし_fixture_setup()たが、うまくいきませんでした。もう 1 つのオプションは、 MyModel オブジェクトを にループして、__init__()復帰制御下に保存することです。

于 2014-09-23T23:51:59.167 に答える
0

「MyModel」はフィクスチャを含むファイルの名前ですか? そうでない場合、おそらく欠けているのはデータの作成です。

フィクスチャ (ただし、モデルの名前ではなくファイル) またはファクトリを使用できます。

モデルのデータベースに初期データを提供することに関連する Django ドキュメントには、章全体があります: https://docs.djangoproject.com/en/1.7/howto/initial-data/

それが役に立てば幸い

于 2014-09-16T09:34:14.050 に答える