Person
というモデルで、deletion_date
という日時フィールドを単純に変更するビューPersonRemoveView
のユニットテストを作成しています。このフィールドは、このビューが実行されるまで、問題がdeletion_date
の値は、ユニットテストからのビューを実行した後None
であることであるtimezone.now()
Djangoユニットテストでデータベースが変更されていません
に設定されている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
メソッドが失敗する