2010-10-28 15 views
0

Hey, Je participe à la mise en place d'une suite de tests de régression pour notre application web python. Beaucoup de nos tests sont des tests de style de planification où la date actuelle est importante. Par exemple: créez un événement récurrent qui s'exécute chaque semaine pendant un mois à partir du 1er février.Tests de régression sensible à la date utilisant python

Pour tester cela, je veux vraiment remplacer la date actuelle pour pouvoir revenir en arrière et avancer vérifiez l'état de l'application. Par exemple, je peux ajouter une page de test uniquement qui me permet de définir la date 'actuelle' qui sera transmise au backend python et qui est utilisée pour les calculs de date.

Dans le passé, quand je l'ai fait, je l'ai intégré dans l'architecture de l'application à partir du jour 1. Malheureusement, je viens en retard à ce projet et il n'y a pas de support d'application pour cela.

Alors, voici ma question, est-il possible de remplacer la date actuelle d'un appel de service Web? Par exemple, puis-je intercepter des appels pour la date actuelle (patch de singe éventuellement?). Je préférerais ne pas avoir à faire toute une chose du CIO car cela reviendrait à changer des centaines de méthodes. - dave

Répondre

1

Vous pouvez faire quelque chose comme ceci:

from datetime import datetime 
orig_datetime_now = datetime.now 

datetime.now = lambda: datetime(2010, 2, 1) 

# tests here 

datetime.now = orig_datetime_now 

Cependant, il est probablement une meilleure idée (ne pas visser avec les bibliothèques de tiers, etc.) pour mettre une méthode d'assistance de votre classe obtenir la date actuelle, et faire la même correction de singe comme montré ci-dessus.

0

répondre à ma propre question:

Notre plan actuel est de tester sur des machines virtuelles et changer la date/heure sur les machines virtuelles. C'est une solution plus complète car elle obtient la base de données et les threads de travail en une seule fois.

Je vais poster une mise à jour avec une expérience du monde réel quand on arrive à le faire.