0

我正在尝试测试日期过滤器,但无法使用 mommy.make() 设置创建日期。当我使用模型 mommy 制作对象时,created 字段设置为创建对象的时间,而不是我使用 mommy.make() 传入的时间

def test_mommy(self):
    today = arrow.now()
    yesterday = today.replace(days=-1)

    mommy.make('Model', created=today.naive)
    mommy.make('Model', created=yesterday.naive)

    model_1_created = Model.objects.all()[0].created
    model_2_created = Model.objects.all()[1].created

    self.assertNotEqual(model_1_created.strftime('%Y-%m-%d'), model_2_created.strftime('%Y-%m-%d'))

此测试因断言错误而失败:

AssertionError: '2018-03-15' == '2018-03-15'

我可能对 model_mommy 如何创建这些对象有误解。但我认为这应该创建它并正确设置创建日期。虽然看起来默认的 TimeStampedObject 行为正在接管。

4

1 回答 1

0

创建对象后,我能够保存创建日期。我认为这也可以通过覆盖 TimeStampedModel 上的保存方法来实现。但这似乎是更简单的解决方案。

def test_mommy(self):
    today = arrow.now()
    yesterday = today.replace(days=-1)

    foo = mommy.make('Model')
    bar = mommy.make('Model')

    foo.created = today.naive
    foo.save()
    bar.created = yesterday.naive
    bar.save()

    model_1_created = Model.objects.all()[0].created
    model_2_created = Model.objects.all()[1].created

    self.assertNotEqual(model_1_created.strftime('%Y-%m-%d'), model_2_created.strftime('%Y-%m-%d'))
于 2018-03-15T19:51:25.547 回答