TL : 초와 밀리 초가 아닌 timezone.now()
에서 현재 날짜와 현재 시간 및 현재 시간 만 가져옵니다.Django 1.9 테스트 timezone.now()
장고 버전 : 1.9 파이썬 버전 : 3.5.1
내 응용 프로그램의 모델을 테스트하는 동안, 나는 이상한 (나에게) 오류가 발생했습니다.
import datetime
from django.core.urlresolvers import reverse
from django.utils import timezone
from django.db import models
class Muayene(models.Model):
...
muayene_tarihi = models.DateField(
default = timezone.now
)
...
이 단위 테스트 : 테스트의
import datetime
from django.test import TestCase
from django.utils import timezone
from hasta.models import Hasta
from muayene.models import Muayene
class MuayeneModelTest(TestCase):
fixtures = ['muayene_testdata', 'hasta_testdata']
def setUp(self):
Hasta.objects.create(ad="foo",soyad="bar",tc_kimlik_no="1234")
def test_default_muayene_tarihi(self):
hasta = Hasta.objects.get(ad="foo")
muayene = Muayene.objects.create(hasta=hasta)
self.assertEqual(muayene.muayene_tarihi, timezone.now())
출력 :
FAIL: test_default_muayene_tarihi (muayene.tests.test_models.MuayeneModelTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/egegunes/Dropbox/Programs/hastatakip/muayene/tests/test_models.py", line 21, in test_default_muayene_tarihi
self.assertEqual(muayene.muayene_tarihi, timezone.now())
AssertionError: datetime.datetime(2016, 7, 8, 14, 38, 54, 780069, tzinfo=<UTC>) != datetime.datetime(2016, 7, 8, 14, 38, 54, 780539, tzinfo=<UTC>)
당신이 알 수 있듯이, 문제는 출력의 차이입니다
나는이 모델이 timezone.now
의 models.py
및 timezone.now()
에서 호출 양식 test_models.py
이라고합니다.
해결 방법은 this question입니다. 그러나 정확한 밀리 세컨드 또는 초를 저장하는 것이 나의 진정한 의도는 아닙니다. 현재 날짜와 시간 (시와 분) 만 원합니다. 또한 default = datetime.date.today()
또는 이와 유사한 것을 설정하고 싶지는 않습니다. 장고는 단지 timezone.now
을 사용하는 것에 대한 경고를하기 때문입니다.
그럼 내 질문은 timezone.now()
으로 현재 날짜, 시간 및 분만 가져올 수 있습니까?
그렇다면이 함수와'default = now'를 사용하여 기본값을'timezone.now'로 설정하는 것에 대한 권장 사항을 따르고 있습니까? – egegunes
@gegeunes : 파이썬 대신 Django의 버전 인'now()'를 사용하는 것이 좋습니다. 왜냐하면 시간대 설정을 고려하기 때문입니다. 내가 게시 한 코드는 그렇게합니다. 호출 가능한'default'가 가리켜 야하는 것에 대한 권고는 없습니다. 예를 들어, [here] (https://docs.djangoproject.com/en/1.9/ref/models/fields/#django.db.models.DateField)를 참조하십시오. "다른 것을 필요로한다면, 단순히 자신의 호출 가능한 기본값을 사용합니다. " –
Kevin, 고맙습니다. – egegunes