Überschreibe auto_now für unittest

Ich habe einige Zeitstempel für Ereignisse in der Datenbank als definiertauto_now_add, da die Informationen mit ihrem Zeitstempel zum selben Zeitpunkt gespeichert werden sollen, an dem das Ereignis gespeichert wird.

Die Beschreibung der Ereignisse ist ungefähr so

class NewEvent(models.Model):
    '''
    Individual event
    '''
    name = models.CharField(max_length=100)
    quantity = models.FloatField(null=True)
    timestamp = models.DateTimeField(auto_now_add=True)

Um das Modul zu testen, generiere ich einige Informationen in der Datenbank imtest.py Datei auf diese Weise:

    for event in EVENT_TYPES:
        time = datetime.datetime.now() - datetime.timedelta(days=1)
        for i in range(48):
            time = time.replace(hour=i / 2)
            NewEvent(name=event,
                     timestamp=time,
                     quantity=i).save()

Ich muss Ereignisse mit dem Zeitstempel von gestern generieren (das Modul fasst sie dann zusammen). Das Problem ist, dass Sie den Zeitstempel nicht überschreiben können. Der Zeitstempel ist der Zeitpunkt, zu dem das Ereignis produziert wirdDokumentation sagt das sehr deutlich.

Wie kann man also Daten mit geeigneten Zeitstempeln für das Testen generieren? Ich hatte verschiedene Ideen:

Möglicherweise werden die Datenbankdaten außerhalb der Modellklassen auf eine andere Weise generiert. Wo und wie?Definieren Sie irgendwie eine andere Klasse oder ändern Sie die Klasse so, dass sie sich während des Tests anders verhält

_

 if testing:
     timestamp = models.DateTimeField(auto_now_add=True)
 else:
     timestamp = models.DateTimeField(auto_now_add=False)

Oder vielleicht gibt es einen noch einfacheren Weg, dies zu tun ... Irgendwelche Ideen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage