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(),但没有奏效。另一种选择是循环 中的 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 回答