Ich wollte Datetime.now (timezone.now) unbedingt reparieren, als ich einen Test für Django machte. Das Memo.
test_app/views.py
from django.utils import timezone
...
def hogehoge():
#Holen Sie sich die aktuelle Zeit einschließlich Zeitzone ab. datetime.datetime(2020, 10, 30, 15, 35, 29, 482661, tzinfo=<UTC>)
return timezone.now()
Ich möchte Code wie diesen testen.
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 #Stellen Sie den Rückgabewert ein
r = hogehoge()
return self.assertEqual(r, now)
Dies ersetzt timezone.now im Code durch einen Mock.
Der automatische Test von PyCharm eignet sich zum Testen. Wenn Sie den Code neu schreiben, wird er automatisch erneut ausgeführt.
Recommended Posts