Je voulais vraiment réparer Datetime.now (timezone.now) lorsque je faisais un test pour Django. Ce mémo.
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.
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.
Le test automatique de PyCharm est pratique pour les tests. Si vous réécrivez le code, il sera automatiquement ré-exécuté.
Recommended Posts