我试图测试一个视图,该视图改变了数据库中对象的状态,然后将其保存回来。问题是,我不能让我的单元测试使用这个视图,即使如果我用我的真实数据库尝试视图,它完美的工作。如何测试在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