我創建一個單元測試的觀點PersonRemoveView
,簡單地修改稱爲deletion_date
在一個名爲Person
模型時間字段。此字段None
直到執行該視圖中,然後將其設置爲timezone.now()
Django的單元測試不修改數據庫
的問題是,執行從單元測試的視圖後的deletion_date
值爲None
。
這是測試:
def test_person_remove_view(self): person = models.Person.objects.get(pk=1) request = self.factory.post('/person/remove/{}'.format(person.id)) response = PersonRemoveView.as_view()(request, pk=person.id) self.assertIsNotNone(person.deletion_date)
和本所認爲:
class PersonRemoveView(PermissionRequiredMixin, generic.DeleteView):
model = Person
success_url = reverse_lazy('control:person_list')
def dispatch(self, request, *args, **kwargs):
self.object = self.get_object()
self.object.deletion_date = timezone.now()
self.object.save()
return HttpResponseRedirect(self.success_url)
我一直在調試和按預期執行dispatch
方法,但臨時測試數據庫不改變和assertIsNotNone
方法失敗