[PYTHON] Je veux corriger Datetime.now dans le test de Django

introduction

Je voulais vraiment réparer Datetime.now (timezone.now) lorsque je faisais un test pour Django. Ce mémo.

Choses à faire

code

Code à tester

test_app/views.py


from django.utils import timezone
...

def hogehoge():
    #Obtenir l'heure actuelle, y compris le fuseau horaire ex. datetime.datetime(2020, 10, 30, 15, 35, 29, 482661, tzinfo=<UTC>)
    return timezone.now()

Je veux tester un code comme celui-ci.

Code de test

test_app/tests.py


from unittest import mock
...

class TestClass(TestCase):
    @mock.patch("test_app.views.timezone.now")
    def test_hogehoge(self, mocked_now):
        now = timezone.make_aware(timezone.datetime(2020, 10, 30, 19, 30))
        mocked_now.return_value = now  #Définir la valeur de retour
        r = hogehoge()
        return self.assertEqual(r, now)

Cela remplace timezone.now dans le code par un simulacre.

finalement

Le test automatique de PyCharm est pratique pour les tests. Si vous réécrivez le code, il sera automatiquement ré-exécuté.

Recommended Posts

Je veux corriger Datetime.now dans le test de Django
[Django] Je souhaite me connecter automatiquement après une nouvelle inscription
Je veux épingler Spyder à la barre des tâches
Je veux imprimer dans la notation d'inclusion
Je veux intégrer Matplotlib dans PySimpleGUI
Je veux faire le test de Dunnett en Python
Je veux créer une fenêtre avec Python
Je souhaite stocker les informations de la base de données dans la liste
Je veux fusionner des dictionnaires imbriqués en Python
Je souhaite utiliser Django Debug Toolbar dans les applications Ajax
Je veux afficher la progression en Python!
Je souhaite télécharger une application Django sur heroku
[Django memo] Je souhaite définir à l'avance les informations de l'utilisateur connecté dans le formulaire.
Je veux écrire en Python! (1) Vérification du format de code
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux faire la transition avec un bouton sur le ballon
Je veux utiliser self avec Backpropagation (tf.custom_gradient) (tensorflow)
Je veux faire défiler la table de décalage Django, mais ...
Je veux écrire en Python! (2) Écrivons un test
Même avec JavaScript, je veux voir Python `range ()`!
Je veux échantillonner au hasard un fichier avec Python
TemplateView les modèles que vous souhaitez apprendre en premier dans Django
Je veux travailler avec un robot en python.
Je veux écrire en Python! (3) Utiliser des simulacres
Je veux utiliser le jeu de données R avec python
Je veux faire quelque chose avec Python à la fin
Je veux manipuler des chaînes dans Kotlin comme Python!
Je veux résoudre SUDOKU
Je souhaite envoyer un message d'erreur en japonais avec le formulaire de changement de mot de passe django
Je souhaite supprimer facilement une colonne contenant NA dans R
Je veux faire quelque chose comme sort uniq en Python
Je veux créer un éditeur de blog avec l'administrateur de django
J'ai fait une commande pour générer un commentaire pour une table dans Django
Je n'arrive pas à me connecter à la page d'administration avec Django 3
Je veux rendre le type de dictionnaire dans la liste unique
[Introduction à Pytorch] Je souhaite générer des phrases dans des articles de presse
Je veux compter des valeurs uniques dans un tableau ou un tuple
Je veux aligner les nombres valides dans le tableau Numpy
Je veux pouvoir exécuter Python avec VS Code
Je veux ajouter un joli complément à input () en python
Je ne voulais pas écrire la clé AWS dans le programme
Erreur liée à memcached dans django
Je veux comprendre à peu près systemd
Comment refléter CSS dans Django
Je veux gratter des images et les former
Je veux faire ○○ avec les Pandas
Épingler la valeur de départ factory_boy dans Django
Je veux copier l'annotation de yolo
Je veux déboguer avec Python
[Linux] Je souhaite connaître la date à laquelle l'utilisateur s'est connecté
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Je veux utiliser des rails avec des rails même dans un environnement vagabond
Développement LINEbot, je souhaite vérifier le fonctionnement dans l'environnement local
[Couches Python / AWS Lambda] Je souhaite réutiliser uniquement le module dans AWS Lambda Layers
Je veux créer un fichier pip et le refléter dans le menu fixe
Je veux faire de la deuxième ligne le nom de la colonne dans pandas
Je veux réussir le test G dans un mois Jour 1
Je veux connaître la population de chaque pays du monde.
Je veux changer la couleur en cliquant sur le point de dispersion dans matplotlib