2016-04-09 36 views
1

我試圖比較DRF響應和輸入值。單元測試Django時區感知日期時間

class ViewTest(TransactionTestCase): 
    reset_sequences = True 
    current_date_time = timezone.now() 

    def setUp(self): 
     self.client = APIClient() 
     self.user = User.objects.create_user('hiren', '[email protected]', 'password') 
     self.client.force_authenticate(user=self.user) 
     self.tag = Tag.objects.create(name="Test tag") 
     Notes.objects.create(tag=self.tag, content="test content", date=self.current_date_time) 

    def test_return_correct_note(self): 
     response = self.client.get('/api/notes/1/') 
     self.assertEqual(response.json(), {'content': 'test content', 'id': 1, 
              'tag': 1, 'date': self.current_date_time}) 

然後我得到這個錯誤:

AssertionError: {'date': '2016-04-09T07:35:28.039393Z', 'co[37 chars]': 1} != {'tag': 1, 'content': 'test content', 'id':[69 chars]TC>)} 
    {'content': 'test content', 
- 'date': '2016-04-09T07:35:28.039393Z', 
+ 'date': datetime.datetime(2016, 4, 9, 7, 35, 28, 39393, tzinfo=<UTC>), 
    'id': 1, 
    'tag': 1} 

什麼是比較Django的日期時間的正確方法是什麼?

回答

3

您可以將Python對象datetime轉換爲ISO時間字符串,也可以將ISO時間字符串解析爲python datetime對象。

例如

... 
'tag': 1, 'date': self.current_date_time.strftime('%Y-%m-%dT%H:%M:%S.%fZ')}) 
相關問題