Este es un pequeño “truco” para testear métodos o funciones que usen datetime.now. Se podrían usar trucos aprovechando que python es un lenguaje muy dinámico, pero siempre que se pueda hacer explícito y simple, para qué complicarnos?
def method(param1, param2, now=None):
now = now or datetime.now()
# do something with now
pass
En el uso normal la llamaremos normalmente, pero en el test podremos pasarle un datetime concreto para testear.