我試圖測試一個視圖,該視圖改變了數據庫中對象的狀態,然後將其保存回來。問題是,我不能讓我的單元測試使用這個視圖,即使如果我用我的真實數據庫嘗試視圖,它完美的工作。如何測試在Django中修改數據庫數據的視圖?
這是視圖:
@login_required
def publicar_investigacion(request,id):
context = RequestContext(request)
try:
inv = Investigacion.objects.get(pk=id)
inv.estado = 1
inv.save()
except Investigacion.DoesNotExist:
pass
return HttpResponseRedirect('/admin/guatepediaapp/investigacion')
,這是我的單元測試:
def test_ResultAprobarInvestigacion(self):
inv = Investigacion.objects.create(pk=100,fecha=timezone.now())
request = RequestFactory()
user = User.objects.create_user(
username='pablo', email='[email protected]', password='miSuperContraseniaa secreta')
request.user = user
response = v.publicar_investigacion(request,100)
self.assertEqual(inv.estado, 1)
It's值得一提的是,可變埃斯塔的defaul狀態時我創建Investigacion是2
這是我得到的運行測試時:
Failure
Traceback (most recent call last):
File "C:\xampp\htdocs\guatepedia\guatepedia\Guatepedia\guatepediaapp\tests.py", line 34, in test_ResultAprobarInvestigacion
self.assertEqual(inv.estado, 1)
AssertionError: 2 != 1
感謝您的幫助
你好。我不認爲我可以這樣做,因爲如果我在視圖之後創建對象,我不會有任何ID發送到視圖。但是也許我沒有正確理解您的答案。感謝您的幫助 – 2014-10-01 18:30:05
好,好點。在這種情況下,您需要在調用視圖後重新加載它,方法是執行'inv = Investigacion.objects.get(pk = inv.pk)'。 – 2014-10-01 18:45:34
非常感謝!它工作完美:) – 2014-10-03 17:02:50